java实现: *设计个生产电脑和搬运电脑类,要求生产出一台电脑就搬走一台电脑 *如果没有新电脑生产出来,则搬运工要等待新电脑产出 ·如果生产出的电脑没有搬走,则要等待电脑搬走之后再生产 *并统计出生产或搬走的电脑数量。
时间: 2024-03-13 18:42:59 浏览: 219
好的,这个问题可以使用Java的多线程机制来解决。
首先,我们需要创建两个类:生产电脑类和搬运电脑类。
生产电脑类代码如下:
```java
public class ProduceComputer implements Runnable {
private int computerCount;
private Object lock;
public ProduceComputer(int count, Object lock) {
this.computerCount = count;
this.lock = lock;
}
@Override
public void run() {
while (true) {
synchronized (lock) {
// 如果已经有电脑了,等待
while (computerCount > 0) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 生产电脑
computerCount++;
System.out.println("已生产电脑,当前电脑数量为:" + computerCount);
// 唤醒搬运电脑的线程
lock.notify();
}
}
}
}
```
搬运电脑类代码如下:
```java
public class CarryComputer implements Runnable {
private int computerCount;
private Object lock;
public CarryComputer(int count, Object lock) {
this.computerCount = count;
this.lock = lock;
}
@Override
public void run() {
while (true) {
synchronized (lock) {
// 如果没有电脑可搬运,等待
while (computerCount == 0) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 搬运电脑
computerCount--;
System.out.println("已搬运电脑,当前电脑数量为:" + computerCount);
// 唤醒生产电脑的线程
lock.notify();
}
}
}
}
```
然后,我们可以在主函数中启动这两个线程,并且使用一个共享的锁对象来协调它们之间的操作,代码如下:
```java
public class Main {
public static void main(String[] args) {
Object lock = new Object();
int computerCount = 0;
Thread produceThread = new Thread(new ProduceComputer(computerCount, lock));
Thread carryThread = new Thread(new CarryComputer(computerCount, lock));
produceThread.start();
carryThread.start();
}
}
```
这样,就可以实现生产和搬运电脑的功能,并且统计电脑数量了。
阅读全文