需求:
某电影院目前正在上映国产大片, 公有100张票 , 而它有3个窗口卖票, 设计一个程序模拟该电影院卖票
1.定义一个类SellTicke实现Runnable接口, 里面定义一个成员变量:
2.在SellTicket类中重写run()方法
A 判断票数大于0就卖票,并告知是哪个窗口卖的
B 卖了之后,总票数-1
C 票没有了,也可能有人来问,所以这里用死循环让卖票的动作一直执行
3.定义一个测试类 SellTickeDemo , 里面有main() 方法
A 创建SellTicket类对象
B 创建三个Thread类的对象, 把SellTicket对象作为构造函数方法的参数,并给出对应的窗口名称
C启动线程
代码示例
//定义一个类SellTicke实现Runnable接口, 里面定义一个成员变量:
public class SellTicke implements Runnable {
private int ticket = 100;
//在SellTicket类中重写run()方法
@Override
public void run() {
/*A 判断票数大于0就卖票,并告知是哪个窗口卖的
B 卖了之后,总票数-1
C 票没有了,也可能有人来问,所以这里用死循环让卖票的动作一直执行*/
while (true) {//采用死循环
if (ticket > 0) {
//通过sleep()方法来模拟出票时间
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "正在出售第" + ticket + "张票");
ticket--;
}
}
}
}
//定义一个测试类 SellTickeDemo , 里面有main() 方法
public class SellTickeDemo {
public static void main(String[] args) {
//A 创建SellTicket类对象
SellTicke st=new SellTicke();
//B 创建三个Thread类的对象, 把SellTicket对象作为构造函数方法的参数,并给出对应的窗口名称
Thread t1=new Thread(st,"窗口1");
Thread t2=new Thread(st,"窗口2");
Thread t3=new Thread(st,"窗口3");
//启动线程
t1.start();
t2.start();
t3.start();
}
}