模拟一个打电话的程序,一个电话的接听者类通过线程实现接听三个不同电话,每个电话接通时间,取10秒-30秒之间的随机数。 java
时间: 2024-12-15 13:19:37 浏览: 2
在Java中,你可以创建一个`CallReceiver`类,利用`Thread.sleep()`方法和`Random`类来模拟接听电话的过程。这里是一个简单的示例:
```java
import java.util.Random;
import java.util.concurrent.TimeUnit;
class Call {
private int duration; // 接听电话的时长(单位:秒)
public Call(int duration) {
this.duration = duration;
}
public void start() {
Random random = new Random();
long startTime = System.currentTimeMillis();
System.out.printf("Starting call %d with duration %d seconds...%n", Thread.currentThread().getId(), duration);
try {
Thread.sleep(random.nextInt((30 - 10) * 1000) + 10000); // 随机选择10秒到30秒的时间
System.out.printf("Call %d ended after %d seconds.%n", Thread.currentThread().getId(), System.currentTimeMillis() - startTime);
} catch (InterruptedException e) {
System.out.println("Call interrupted.");
}
}
}
public class CallReceiver extends Thread {
private final int maxCalls = 3; // 最大接听电话数
private int callsMade = 0;
@Override
public void run() {
while (callsMade < maxCalls) {
Call call = new Call(new Random().nextInt(21) + 10); // 10到30秒的范围
call.start();
callsMade++;
}
}
public static void main(String[] args) {
CallReceiver receiver = new CallReceiver();
receiver.start();
}
}
```
在这个例子中,`CallReceiver`类作为主线程启动,它会创建多个`Call`对象,然后在后台线程中执行。每个`Call`对象的`start()`方法会睡眠一个随机的时长,然后结束通话。
阅读全文