java定义一个子任务类,实现Runnable接口,用来模拟电影票。 1.1 在子任务类中定义一个变量,用来表示总票数量; 1.2 在子任务类中,重写Runnable接口的run方法; 1.3在run方法中,模拟卖票,使用同步代码块或者同步方法保证同一时间只能有一个线程(窗口)在卖票,每卖一张票,就让票数量减一; 2.定义一个测试: 1.1在测试类的main方法中,创建一个票对象,三个子线程对象,创建三个子线程时,把票对象和窗口名作为参数传递给线程的构造方法; 1.2 开启三个子线程;
时间: 2023-06-12 17:05:25 浏览: 77
子任务类代码如下:
```java
public class MovieTicket implements Runnable {
private int ticketNum;
public MovieTicket(int ticketNum) {
this.ticketNum = ticketNum;
}
@Override
public void run() {
synchronized (this) {
while (ticketNum > 0) {
System.out.println(Thread.currentThread().getName() + "卖出一张票,剩余票数:" + --ticketNum);
}
}
}
}
```
测试类代码如下:
```java
public class Test {
public static void main(String[] args) {
MovieTicket ticket = new MovieTicket(30);
Thread window1 = new Thread(ticket, "窗口1");
Thread window2 = new Thread(ticket, "窗口2");
Thread window3 = new Thread(ticket, "窗口3");
window1.start();
window2.start();
window3.start();
}
}
```
运行程序可以看到三个窗口同时卖票,但是每一张票只能被卖一次,确保了线程安全。
阅读全文