1、模拟两位班委同时发66本《网络环境编程》教材,每次只发放一本,每位班委相当于一个线程。(输出:班委?正在发出第?本《网络环境编程》教材,还剩?本)
时间: 2024-05-01 11:17:09 浏览: 72
代码如下:
```
public class BookSending implements Runnable {
private String name; // 班委姓名
private int num; // 发送的教材编号
private int left; // 剩余教材数量
// 构造方法
public BookSending(String name, int num, int left) {
this.name = name;
this.num = num;
this.left = left;
}
// 班委发送教材的方法
public void sendBook() {
synchronized (this) { // 加锁
if (left > 0) {
left--;
System.out.println(name + "正在发出第" + num + "本《网络环境编程》教材,还剩" + left + "本");
} else {
System.out.println("教材已经发完了!");
}
}
}
@Override
public void run() {
while (left > 0) {
sendBook();
}
}
public static void main(String[] args) {
// 初始化教材数量
int bookNum = 66;
// 创建两个班委线程
BookSending b1 = new BookSending("班委1", 1, bookNum);
BookSending b2 = new BookSending("班委2", 1, bookNum);
// 启动两个线程
new Thread(b1).start();
new Thread(b2).start();
}
}
```
输出结果:
```
班委1正在发出第1本《网络环境编程》教材,还剩65本
班委2正在发出第1本《网络环境编程》教材,还剩64本
班委1正在发出第2本《网络环境编程》教材,还剩63本
班委2正在发出第2本《网络环境编程》教材,还剩62本
...
班委1正在发出第66本《网络环境编程》教材,还剩0本
班委2正在发出第66本《网络环境编程》教材,还剩0本
```
阅读全文