浏览 2800 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-03-05
2009-02-10 12:38例: class NewThread implements Runnable { Thread t; public NewThread() { t = new Thread(this,"Demo thread"); System.out.println("Child thread : " + t); t.run(); } public void run(){ try{ for( int i = 5; i > 0; i --){ System.out.println("Child thread :" + i); Thread.sleep(500); } }catch(InterruptedException e){ System.out.println("Child interrupted."); } System.out.println("Exiting child thread."); } } public class TestDemo{ public static void main(String args[]){ new NewThread(); try{ for( int i = 5; i > 0; i --){ System.out.println("Main thread :" + i); Thread.sleep(1000); } }catch(InterruptedException e){ System.out.println("Main interrupted."); } System.out.println("Exiting Main thread."); } } 这是一个实现多线程的程序,运行结果如下: Child thread : Thread[Demo thread,5,main] Main thread :5 Child thread :5 Child thread :4 Main thread :4 Child thread :3 Child thread :2 Main thread :3 Child thread :1 Exiting child thread. Main thread :2 Main thread :1 Exiting Main thread. 试想,如果把 start()改成run()会出现什么结果? 修改之后运行结果: Child thread : Thread[Demo thread,5,main] Child thread :5 Child thread :4 Child thread :3 Child thread :2 Child thread :1 Exiting child thread. Main thread :5 Main thread :4 Main thread :3 Main thread :2 Main thread :1 Exiting Main thread. 程序运行成为了单线程顺序执行。为什么? start方法:用来启动一个线程, 这时此线程是处于就绪状态, 并没有运行。 然后通过此Thread类调用方法run()来完成其运行操作的, 这里方法run()称为线程体, 它包含了要执行的这个线程的内容, run方法运行结束, 此线程终止, 而CPU再运行其它线程, 直接用run方法: 这只是调用一个方法而已, 程序中依然只有主线程--这一个线程, 其程序执行路径还是只有一条, 这样就没有达到写线程的目的。 记住:线程就是为了更好地利用CPU,提高程序运行速率的! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |