编程题目:
3.写一个卖票的程序,要求如下:
(1)写一个类,该类实现了Runnable接口.有一个私有类型的int作为参数tickets;票的总数为100,完成run方法,输出结果的格式如下:
当前窗口为:窗口a,剩余票数为19,其中窗口a为线程的名字
(2)开启四个卖票窗口(开始四个线程),同时执行卖票的程序。
示例代码:
package program.thread.exercise03;
/**
* 3.写一个卖票的程序,
* (1)写一个类,该类实现了Runnable接口.有一个私有类型的int作为参数tickets.
* 票的总数为100,完成run方法,输出结果的格式如下:
* 当前窗口为:窗口a,剩余票数为19,其中窗口a为线程的名字
* (2)开启四个卖票窗口(开始四个线程),同时执行卖票的程序
**/
public class TicketSale {
public static void main(String[] args) {
Ticket ticket = new Ticket();
new Thread(ticket,"a").start();
new Thread(ticket,"b").start();
new Thread(ticket,"c").start();
new Thread(ticket,"d").start();
}
}
class Ticket implements Runnable{
private int tickets = 100;
@Override
public void run() {
while (true) {
synchronized (this) {
if(tickets <= 0){
return;
}
try {
Thread.sleep(30);
String name = Thread.currentThread().getName();
if(name.equals("a")){
System.out.println("当前窗口为:窗口a,剩余票数为"+--tickets);
}else if(name.equals("b")){
System.out.println("当前窗口为:窗口b,剩余票数为"+--tickets);
}else if(name.equals("c")){
System.out.println("当前窗口为:窗口c,剩余票数为"+--tickets);
}else if(name.equals("d")){
System.out.println("当前窗口为:窗口d,剩余票数为"+--tickets);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
结果显示: