题目 2(使用实现 Runnable 的方法, TicketWindow ImplementsRunnable. java) 假设售票厅有四个窗口可发售某日某次列车的 100 张车票,这时,100 张车 泰可以看做共享资源,四个售票窗口需要创建四个线程。为了更直观豆示商口的 售 票情况,可以通过 Thread 的 currentThreado方法得到当前的线程的实例对 象 然后调用 getNameo方法可以卖取到线程的名称。
时间: 2024-02-09 19:12:20 浏览: 102
以下是使用`Runnable`接口实现售票厅的示例代码,命名为`TicketWindowImplementsRunnable.java`:
```java
public class TicketWindowImplementsRunnable implements Runnable {
private int tickets = 100; // 假设售票厅有100张车票
public void run() {
while (true) {
synchronized (this) { // 同步锁,保证线程安全
if (tickets > 0) {
System.out.println(Thread.currentThread().getName() + "售出第" + (101 - tickets) + "张车票");
tickets--;
} else {
break; // 如果车票卖完了,就退出循环
}
}
}
}
public static void main(String[] args) {
TicketWindowImplementsRunnable tw = new TicketWindowImplementsRunnable();
Thread t1 = new Thread(tw, "售票窗口1");
Thread t2 = new Thread(tw, "售票窗口2");
Thread t3 = new Thread(tw, "售票窗口3");
Thread t4 = new Thread(tw, "售票窗口4");
t1.start();
t2.start();
t3.start();
t4.start();
}
}
```
在该示例代码中,我们首先定义了一个实现了`Runnable`接口的`TicketWindowImplementsRunnable`类,并重写了`run()`方法来实现售票的逻辑。在售票逻辑中,我们使用`synchronized`关键字来保证线程安全。
在`main()`方法中,我们创建了四个线程,分别代表四个售票窗口,然后启动这四个线程。每个窗口在售票时,通过`Thread.currentThread().getName()`方法获取当前线程的名称,以便更好地展示售票情况。
值得注意的是,在该示例代码中,我们使用`synchronized`关键字来保证线程安全,以免出现多个售票窗口同时售出同一张车票的情况。
阅读全文