Java实现模拟两位班委同时总共发66本《网络环境编程》教材,每次只发放一本,每位班委相当于一个线程。(输出:班委?正在发出第?本《网络环境编程》教材,还剩?本)
时间: 2024-04-29 11:22:46 浏览: 57
```java
public class Main {
public static void main(String[] args) {
Book book = new Book(66);
Thread t1 = new Thread(new Student("班委1", book));
Thread t2 = new Thread(new Student("班委2", book));
t1.start();
t2.start();
}
}
class Book {
private int num;
public Book(int num) {
this.num = num;
}
public synchronized void borrow(String name) {
while (num <= 0) { // 当书本数量为0时,等待
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
num--;
System.out.println(name + " 正在发出第 " + (66 - num) + " 本《网络环境编程》教材,还剩 " + num + " 本");
notifyAll(); // 唤醒所有线程
}
}
class Student implements Runnable {
private String name;
private Book book;
public Student(String name, Book book) {
this.name = name;
this.book = book;
}
@Override
public void run() {
while (book != null && book.num > 0) { // 当书本数量大于0时,不断发放
book.borrow(name);
}
}
}
```
阅读全文