Topic: 执行结果的不确定能否理解为线程调度的不确定性 |
Print this page |
1.执行结果的不确定能否理解为线程调度的不确定性 | Copy to clipboard |
Posted by: zhjdenis Posted on: 2007-09-26 21:36 两进程并行; public class Mythread extends Thread { private static int count=0; public Mythread(String name) { super(name); } public static void main(String[] args) { Mythread p1=new Mythread("t1"); p1.start(); Mythread p2=new Mythread("t2"); p2.start(); for(int i=0;i<5;i++) { count++; System.out.println(count+":main"); } } public void run() { for(int i=0;i<5;i++) { count++; System.out.println(count+":"+this.getName()); } } } 这个程序的结果不确定 但是下面这个却是确定的,为什么啊? public class Mythread implements Runnable { private static int count=0; int number; public Mythread(int n) { number=n; System.out.println; } public void run() { // TODO 自动生成方法存根 while(count<15) { System.out.println(count+":"+number); count++; } } public static void main(String[] args) { //for(int i=0;i<3;i++) //{ // new Thread(new Mythread(i+1)).run(); //} new Thread(new Mythread(1)).run(); new Thread(new Mythread(2)).run(); new Thread(new Mythread(3)).run(); } } |
2.Re:执行结果的不确定能否理解为线程调度的不确定性 [Re: zhjdenis] | Copy to clipboard |
Posted by: Cappuccino Posted on: 2007-09-26 22:44 Thread.run() != Thread.start() |
3.Re:执行结果的不确定能否理解为线程调度的不确定性 [Re: zhjdenis] | Copy to clipboard |
Posted by: andy_wang_5 Posted on: 2007-09-27 10:34 第一个输出结果不确定是正确的。因为是在多线程环境下执行的。 第二个你没有调用start(),(没有启动多线程)。 所以输出结果是确定的。 run()方法是不能启动多线程的。 |
4.Re:执行结果的不确定能否理解为线程调度的不确定性 [Re: zhjdenis] | Copy to clipboard |
Posted by: zhjdenis Posted on: 2007-09-27 20:24 明白了,多谢了! |
5.Re:执行结果的不确定能否理解为线程调度的不确定性 [Re: zhjdenis] | Copy to clipboard |
Posted by: JiafanZhou Posted on: 2007-09-27 21:30 该用JDK1.5启用线程的方法好一点。 ExecutorService esMain = Executors.newCachedThreadPool(); esMain.execute(new Mythread(1)); esMain.shutdown(); 他从更高层封装了线程启动的方法。 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |