当前位置: 代码迷 >> J2SE >> 一个多线程的例证,为什么突然会占用大量内存呢
  详细解决方案

一个多线程的例证,为什么突然会占用大量内存呢

热度:97   发布时间:2016-04-23 20:12:30.0
一个多线程的例子,为什么突然会占用大量内存呢?
/*
这是毕向东老师视频里面售票的例子,用来练习多线程。
需求:简单的卖票程序。
四个窗口卖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--);
        }
    }
}

你的程序实际上没有结束,一直在执行、
  相关解决方案