黑马程序员技术交流社区
标题:
多线程问题
[打印本页]
作者:
hzl_0911
时间:
2014-8-6 01:29
标题:
多线程问题
package book.javacore.booka;
//多窗口售票问题
class ticket implements Runnable{
private int num = 10;
public void run() {
for(num=10;num>=0;num--){
System.out.println(Thread.currentThread().getName()+";"+num);
}
// while(true){
// if(num>0){
// System.out.println(Thread.currentThread().getName()+";"+num--);
// }
// }
}
}
public class TicketDemo {
public static void main(String[] args) {
ticket t = new ticket();
Thread k1 = new Thread(t);
Thread k2 = new Thread(t);
Thread k3 = new Thread(t);
Thread k4 = new Thread(t);
k1.start();
k2.start();
k3.start();
k4.start();
}
}
-----------------------------------------
这个视频上的售票问题,为什么用for循环和while循环得出的结果不同?
作者:
hzl_0911
时间:
2014-8-6 01:35
用while循环的结果Thread-0;10
Thread-0;9
Thread-0;8
Thread-0;7
Thread-0;6
Thread-1;5
Thread-1;3
Thread-1;2
Thread-1;1
Thread-0;4
用for循环的结果
Thread-0;10
Thread-0;9
Thread-0;8
Thread-0;7
Thread-0;6
Thread-0;5
Thread-0;4
Thread-0;3
Thread-0;2
Thread-0;1
Thread-0;0
Thread-1;10
Thread-2;10
Thread-2;10
Thread-3;10
Thread-3;9
Thread-3;8
Thread-3;7
Thread-3;6
Thread-3;5
Thread-3;4
Thread-3;3
Thread-3;2
Thread-3;1
Thread-3;0
作者:
fxwb2005
时间:
2014-8-6 01:37
本帖最后由 fxwb2005 于 2014-8-6 01:43 编辑
首先你for里面操作的num是个局部变量 和上面定义的num没有关系 第二 你for循环定义了11次 whil只定义了10次,因为没有实现同步,实际循环的次数肯定不止那么多,但你本身定义就错了。
作者:
hzl_0911
时间:
2014-8-6 01:42
理解了,谢谢!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2