我的任务是创建一个程序,它具有:
班级Client
班级Gate
班级Museum
通过使用类Client
进入和离开。博物馆一次最多可接待 5 位顾客。Museum
Gate
当我Clients
在某个时候输入 1000 时,输出会给我不需要的数字。
样本输出:
Client (358) is leaving the Museum! number of customers: 2
Client (214) is entering the Museum! number of customers: 3
Client (214) is leaving the Museum! number of customers: 2
Client (73) is entering the Museum! number of customers: 5
Client (73) is leaving the Museum! number of customers: 5
Client (397) is entering the Museum! number of customers: 5
Client (76) is entering the Museum! number of customers: 6
----------------------------------------------------------------
Client (930) is entering the Museum! number of customers: 7
Client (930) is leaving the Museum! number of customers: 6
Client (308) is entering the Museum! number of customers: 6
Client (183) is entering the Museum! number of customers: 6
Client (183) is leaving the Museum! number of customers: 5
----------------------------------------------------------------
Client (647) is entering the Museum! number of customers: 7
Client (647) is leaving the Museum! number of customers: 6
----------------------------------------------------------------
Client (540) is entering the Museum! number of customers: 7
我期望客户会在某个随机时间尝试进入,当博物馆中有 5 个或更多客户时,他们将不得不等待其他线程结束它的任务。
这是我的代码:
Client.java
package client;
import gate.Gate;
import museum.Museum;
import java.util.Random;
public class Client extends Thread {
private static int id = 0;
private int clientID;
public Client() {
Client.id++;
this.clientID = id;
}
@Override
public void run() {
this.enterMuseum();
this.leaveMuseum();
}
///////////////////////////////////////////////////////////////////////////////////
private void enterMuseum() {
try {
Thread.sleep(new Random().nextInt(401) + 100);
} catch (InterruptedException e) {
e.printStackTrace();
}
月关宝盒
相关分类