实现一个简单的多线程
一、定义线程?1、扩展java.lang.Thread类。此类中有个run()方法,应该注意其用法:public void run()?
如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。
?
?Thread 的子类应该重写该方法。
?
2、实现java.lang.Runnable接口。void run()使用实现接口 Runnable 的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的 run 方法。
方法 run 的常规协定是,它可能执行任何所需的操作。
package thread_test;/** * 测试Runnable类实现的多线程程序 * * @author ciding * @createTime Dec 7, 2011 9:38:52 AM * */public class TestRunnable { public static void main(String[] args) { StrRunnable sr1 = new StrRunnable("chenfengbin"); StrRunnable sr2 = new StrRunnable("cidng"); Thread t1 = new Thread(sr1); Thread t2 = new Thread(sr2); t1.start(); t2.start(); StrThread st1 = new StrThread("chenfengbin"); StrThread st2 = new StrThread("cidng"); Thread t3 = new Thread(st1); Thread t4 = new Thread(st2); t3.start(); t4.start(); }}/** * 通过实现接口的多线程 * * @author ciding * @createTime Dec 8, 2011 10:20:28 PM * */class StrRunnable implements Runnable { private String name; public StrRunnable(String name) { this.name = name; } public void run() { for (int i = 0; i < 3; i++) { for(long j=0;j<100000000;j++);//用来模拟一个非常耗时的操作,方便显示多线程效果。 System.out.println("Runnable下的" + name + ": " + i); } } }/** * 通过继承类的多线程 * * @author ciding * @createTime Dec 8, 2011 10:20:50 PM * */class StrThread extends Thread{private String name;public StrThread(String name){this.name = name;}public void run() { for (int i = 0; i < 3; i++) { for(long j=0;j<100000000;j++);//用来模拟一个非常耗时的操作,方便显示多线程效果。 System.out.println("Thread下的" + name + ": " + i); } }}?运行结果:Runnable下的chenfengbin: 0Runnable下的cidng: 0Thread下的chenfengbin: 0Thread下的cidng: 0Runnable下的chenfengbin: 1Runnable下的cidng: 1Thread下的chenfengbin: 1Thread下的cidng: 1Runnable下的chenfengbin: 2Thread下的chenfengbin: 2Runnable下的cidng: 2Thread下的cidng: 2??思考问题: ?????? 1,直接调用run()方法,与一般程序有区别吗?会启动一个新的线程吗?那启动一个新线程是怎么运做的呢。?????? 2,线程有名字吗??????? 3,线程是怎么调度的呢?我们是不是影响线程调度的方式。?????? 4,线程有哪些运行状态??????? 5,线程都有哪些常见方法?是的,这些问题将在后面的环节一一解答。Java线程及线程池专题:http://ciding.iteye.com/admin/blogs/1300110 ??