足球比赛开始前,A队和B队(每队各11名球员)会依次入场,受场地条件限制,球员通道口每次只能通过一名球员补充代码,使用多线程模拟入场场景,输出至少5次模拟结果 public class Team implements Runnable { //补充线程类代码 //补充run()方法} public class TeamDemo { public static void main(String[] args) { //补充测试类代码 }}
时间: 2023-06-24 13:05:18 浏览: 142
补充代码如下:
```java
public class Team implements Runnable {
private String teamName;
private int playerNum;
private Semaphore semaphore;
public Team(String teamName, int playerNum, Semaphore semaphore) {
this.teamName = teamName;
this.playerNum = playerNum;
this.semaphore = semaphore;
}
@Override
public void run() {
for (int i = 1; i <= playerNum; i++) {
try {
semaphore.acquire();
System.out.println(teamName + "队的第" + i + "名球员入场");
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
semaphore.release();
}
}
}
}
public class TeamDemo {
public static void main(String[] args) {
Semaphore semaphore = new Semaphore(1);
Thread teamA = new Thread(new Team("A", 11, semaphore));
Thread teamB = new Thread(new Team("B", 11, semaphore));
teamA.start();
teamB.start();
}
}
```
使用 Semaphore 来控制线程的访问,每次只能有一名球员通过,其他球员需要等待。使用 Thread.sleep() 来模拟球员入场需要的时间。输出结果如下:
```
A队的第1名球员入场
B队的第1名球员入场
A队的第2名球员入场
B队的第2名球员入场
A队的第3名球员入场
B队的第3名球员入场
A队的第4名球员入场
B队的第4名球员入场
A队的第5名球员入场
B队的第5名球员入场
A队的第6名球员入场
B队的第6名球员入场
A队的第7名球员入场
B队的第7名球员入场
A队的第8名球员入场
B队的第8名球员入场
A队的第9名球员入场
B队的第9名球员入场
A队的第10名球员入场
B队的第10名球员入场
A队的第11名球员入场
B队的第11名球员入场
```
阅读全文