黑马程序员技术交流社区
标题:
关于同步函数的一个问题
[打印本页]
作者:
赵珏
时间:
2014-1-11 01:02
标题:
关于同步函数的一个问题
我改写了一下视频里的卖票的小程序, 如下:
/**
用多线程的第二种方法实现一个卖票的小程序
要求: 用3个线程同时卖100张票
*/
class Tickets implements Runnable
{
private int TicketNumber = 100;
private synchronized void sell()
{
if(TicketNumber > 0)
System.out.println(Thread.currentThread().getName()+"卖出第 "+TicketNumber--+" 张票.");
}
public void run()
{
while(true)
{
sell();
}
}
}
public class ThreadDemo2
{
public static void main(String arg[])
{
Tickets Today = new Tickets();
Thread t1 = new Thread(Today);
Thread t2 = new Thread(Today);
Thread t3 = new Thread(Today);
t1.start();
t2.start();
t3.start();
}
}
复制代码
问题是: 在运行时, 为什么打印出来的线程名称100张票全部都是第一个线程卖出的?
作者:
ixiangfeng
时间:
2014-1-11 10:33
代码好像没问题吧 应该是电脑的问题,有时候一个线程就全部打印出来了 这个很正常的 你在输出后面加上sleep()语句就可以很明显地看到效果了
作者:
姜胜凯
时间:
2014-1-11 19:20
我用电脑验证下,代码没问题,只是和谐了~你可以在 sell(); 后加上sleep()语句 就能看出来了
作者:
路西法
时间:
2014-1-11 19:47
把100改成1000试试就出来了 代码应该没错
作者:
smartisan
时间:
2015-5-1 15:09
楼上正解 !!
作者:
li520
时间:
2015-6-1 23:56
蛮不错的
作者:
li520
时间:
2015-6-1 23:58
这个有点难
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2