黑马程序员技术交流社区
标题:
一样的代码,两台电脑运行,却是不一样的结果
[打印本页]
作者:
GAREN
时间:
2016-6-2 00:54
标题:
一样的代码,两台电脑运行,却是不一样的结果
public class Demo2_Synchronized {
/**
* @param args
* 需求:铁路售票,一共100张,通过四个窗口卖完.
*/
public static void main(String[] args) {
TicketsSeller t1 = new TicketsSeller();
TicketsSeller t2 = new TicketsSeller();
TicketsSeller t3 = new TicketsSeller();
TicketsSeller t4 = new TicketsSeller();
t1.setName("窗口1");
t2.setName("窗口2");
t3.setName("窗口3");
t4.setName("窗口4");
t1.start();
t2.start();
t3.start();
t4.start();
}
}
class TicketsSeller extends Thread {
private static int tickets = 100;
static Object obj = new Object();
public TicketsSeller() {
super();
}
public TicketsSeller(String name) {
super(name);
}
public void run() {
while(true) {
synchronized(obj) {
if(tickets <= 0)
break;
try {
Thread.sleep(10);//线程1睡,线程2睡,线程3睡,线程4睡
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(getName() + "...这是第" + tickets-- + "号票");
}
}
}
}
作者:
GAREN
时间:
2016-6-2 00:55
这里所说的不一样并不是说,线程执行的先后,是说我的电脑就一个线程把整个代码执行完了.别的线程没执行.而其他同学的却是有交替的
作者:
GAREN
时间:
2016-6-2 01:00
代码都是一样的完全没更改,很好奇这是为什么
作者:
善良的死神达乐
时间:
2016-6-2 01:02
是一直都是么????只有一个线程执行???
作者:
ninini
时间:
2016-6-2 01:32
有点意思,是电脑cpu的问题吗?
作者:
dubei1993
时间:
2016-6-2 07:27
确实很奇怪。。
作者:
SkyBlack
时间:
2016-6-2 08:30
还没学到、、、路过学习
作者:
android_vae
时间:
2016-6-2 10:28
确实有待研究,我试了一下,只有两个线程
作者:
android_vae
时间:
2016-6-2 10:30
你把睡眠时间该长一点试试应该就没问题了,我认为是CPU的问题
作者:
niwota
时间:
2016-6-2 20:44
android_vae 发表于 2016-6-2 10:30
你把睡眠时间该长一点试试应该就没问题了,我认为是CPU的问题
我的也出现这种情况了.不知道为什么
作者:
qq415997288
时间:
2016-6-2 21:02
原来是这样子啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2