中易网

用java模拟铁路售票系统~实现四个售票点发售某日某次列车的100张车票(多线程问题)

答案:1  悬赏:30  
解决时间 2021-01-10 16:57
  • 提问者网友:泪痣哥哥
  • 2021-01-10 14:03
用java模拟铁路售票系统~实现四个售票点发售某日某次列车的100张车票(多线程问题)
最佳答案
  • 二级知识专家网友:罪歌
  • 2021-01-10 15:00
public class TicketsSystem
{
public static void main(String[] args)
{
SellThread st=new SellThread();

// new Thread(st).start();
try
{
Thread.sleep(1);
}
catch(Exception e)
{
e.printStackTrace();
}
st.b=true;
new Thread(st).start();
new Thread(st).start();
new Thread(st).start();
}
}

class SellThread implements Runnable
{
int tickets=100;
Object obj=new Object();
boolean b=false;
public void run()
{
if(b==false)
{
while(true)
sell();
}
else
{
while(true)
{
synchronized(obj)
{
try
{
Thread.sleep(10);
}
catch(Exception e)
{
e.printStackTrace();
}
synchronized(this)
{
if(tickets>0)
{

System.out.println("obj:"+Thread.currentThread().getName()+
" sell tickets:"+tickets);
tickets--;
}
}
}
}
}
}
public synchronized void sell()
{
synchronized(obj)
{
if(tickets>0)
{
try
{
Thread.sleep(10);
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("sell():"+Thread.currentThread().getName()+
" sell tickets:"+tickets);
tickets--;
}
}
}
}qq号:1369038795
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息