满意答案
击风搏浪
2015.06.02
采纳率:53% 等级:12
已帮助:11485人
/**
* 请用线程来完成,规则为:售票点一和三,只能销售编号为奇数的票,如1,3,5,7.......;售票点二只能销售
* 编号为2的倍数的票,如2,4,8.......;售票点四,只能销售编号为4的倍数的票如4,8,12....
* */
package 多线程;
public class TicketTest {
public static void main(String[] args) {
Ticket3 t=new Ticket3();
new Thread(t,"售票点一").start();
new Thread(t,"售票点二").start();
new Thread(t,"售票点三").start();
new Thread(t,"售票点四").start();
}
}
class Ticket3 implements Runnable
{
private int ticket=100;//共享数据
public void run()
{
while(true)//每个窗口都一致循环卖票,直到ticket为0,便结束循环
{
synchronized(Ticket.class)//每个线程进来都先判断锁,
{
if(ticket>0)
{
if(Thread.currentThread().getName().equals("售票点一")||Thread.currentThread().getName().equals("售票点三"))
{
if(ticket%2!=0)
{
System.out.println(Thread.currentThread().getName()+":卖出"+ticket+"号票");
ticket--;
}
else
{
continue;
}
}
else
{
if(ticket%2==0)
{
System.out.println(Thread.currentThread().getName()+":卖出"+ticket+"号票");
ticket--;
}
else
{
continue;
}
}
}
}
if(ticket==0)//每个线程都在卖掉一张票后判断是否还有票,没有就结束循环,run方法结束
return;
}
}
}
00分享举报