黑马程序员技术交流社区
标题:
售票程序为什么只打印了一线程?
[打印本页]
作者:
sam3say
时间:
2014-12-15 11:32
标题:
售票程序为什么只打印了一线程?
//定义Ticket1类实现runnable接口
class Ticket1 implements Runnable
{
private int ticket=10;
//Object lock=new Object();
public void run()
{
while(true)
{
saleTicket();//调用售票方法
if(ticket<=0)
{
break;
}
}
}
//定义一个同步方法saleTicket
private synchronized void saleTicket()
{
if(ticket>0)
{
try
{
Thread.sleep(10);//经过此线程的时候休眠10毫秒
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"----卖出的票:"+ticket--);
}
}
}
class Example12
{
public static void main(String[] args)
{
Ticket1 t1=new Ticket1();//创建Ticket1对象
//创建并开启四个线程
new Thread(t1,"线程一").start();
new Thread(t1,"线程二").start();
new Thread(t1,"线程三").start();
new Thread(t1,"线程四").start();
//System.out.println("Hello World!");
}
}
复制代码
控制台只打印了线程一,1到10的结果。
为什么没有打印出来别的线程呢?
作者:
姿_`态
时间:
2014-12-15 12:36
就卖10张票太少了, 你卖1000张 ,你看一个售票员还忙得过来不。。。
作者:
Rain2692
时间:
2014-12-15 12:44
恩,楼上说的对,你的数据太少了,最少1000在看看,或者加入sleep看看,给别的线程有执行的时间
作者:
lishuliang28
时间:
2014-12-15 21:13
线程1起来以后,加个等待,sleep()在试试
作者:
wzl963358694
时间:
2014-12-15 21:38
不错慢慢的正能量
作者:
wzl963358694
时间:
2014-12-15 21:42
不错慢慢的正能量
作者:
manu_chen
时间:
2014-12-15 21:55
路过,学习学习
作者:
chudaming213
时间:
2014-12-15 22:35
你可以吧一线程注释掉,看看是不是有问题,要是没有就是数据太少的原因。
作者:
飞跃离开
时间:
2014-12-15 23:01
票数太少了,其他的线程还没有获得执行权呢
作者:
zcyemenye
时间:
2014-12-15 23:06
票太少了 别的线程没有抢到
作者:
Bali
时间:
2014-12-15 23:41
人多票少!
作者:
sam3say
时间:
2014-12-16 08:12
谢谢大家的指导啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2