问题描述
假设现在车站有4个窗口同时要将1000张车票售出,每个窗口每次只卖掉1张,请使用多线程来模拟这一卖票过程。如果用java编程思想,该怎样解决?请高手解答。。
解决方案
解决方案二:
importjava.util.concurrent.Semaphore;publicclassTicketSystem{privateSemaphoresemaphore=newSemaphore(100);privateIntegertickets=100;publicvoidstart(Stringname){Threadt=newThread(name){publicvoidrun(){while(true){if(semaphore.tryAcquire()){synchronized(tickets){tickets--;System.out.println(Thread.currentThread().getName()+"已经卖出了第"+(100-tickets)+"张票");}}else{break;}}}};t.start();}publicstaticvoidmain(String[]args){TicketSystemts=newTicketSystem();ts.start("james");ts.start("andy");ts.start("Tom");}}
解决方案三:
1楼的这里Semaphore类后面参数写100while(true)里表明他循环100次然后用synchronized按顺序打印出来如果这里没有synchronized也可以卖的时候只是不是1234但还是100张都会卖掉的
解决方案四:
《使用java编程思想》用使字诀。
时间: 2024-12-09 22:15:58