/*
这是毕向东老师视频里面售票的例子,用来练习多线程。
需求:简单的卖票程序。
四个窗口卖100张票。
*/
class Ticket implements Runnable
{
private int tick=100;//票的资源独立出来了
public void run()
{
while(true)
{
if(tick>0)
{
System.out.println(Thread.currentThread().getName()+"---sale:"+tick--);
}
}
}
}
class TicketDemo
{
public static void main(String[] args)
{
Ticket t=new Ticket();//四个线程共享一个t对象
Thread t1=new Thread(t);
Thread t2=new Thread(t);
Thread t3=new Thread(t);
Thread t4=new Thread(t);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
运行的结果是:





对照毕老师视频运行结果,我产生两个问题:
1、为什么突然内存占用几乎满了?
2、为什么运行结束后下面有大片空白,为什么不能再编译运行其他java文件了?
我瞄了好几次了,代码没什么不同啊,为什么结果就不一样捏,实在没办法了求各位大大帮忙下。------解决思路----------------------
while(true)//没有结束条件,死循环了,加个判断条件,当ticket<0后 跳出循环
{
.................
}
------解决思路----------------------
上面正解啊,你的程序进了无限循环了,需要手动停止,
------解决思路----------------------
class Ticket implements Runnable
{
private int tick=100;//票的资源独立出来了
public void run()
{
while(tick>0)
{
System.out.println(Thread.currentThread().getName()+"---sale:"+tick--);
}
}
}
你的程序实际上没有结束,一直在执行、