.通过实现Runnable接口的形式创建一个多线程程序, 模拟三个监考老师同时分发100份试卷,每个老师相当于一个线程。程序输出如下:\
时间: 2024-03-25 12:37:40 浏览: 20
好的,我来给你写一个实现了Runnable接口的多线程程序,模拟三个监考老师同时分发100份试卷,每个老师相当于一个线程。程序输出了每个老师分发的试卷数。
```java
public class ExamRunnable implements Runnable {
private static int papers = 100; // 总共100份试卷
private int distributed = 0; // 分发的试卷数
private String teacherName; // 老师的名字
public ExamRunnable(String teacherName) {
this.teacherName = teacherName;
}
@Override
public void run() {
while (papers > 0) {
synchronized (this) { // 使用同步锁确保线程安全
if (papers > 0) {
System.out.println(teacherName + "分发第" + papers + "份试卷");
papers--;
distributed++;
} else {
System.out.println(teacherName + "没有试卷了!");
}
}
try {
Thread.sleep(100); // 休眠100毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(teacherName + "共分发了" + distributed + "份试卷");
}
public static void main(String[] args) {
ExamRunnable er1 = new ExamRunnable("Teacher-1");
ExamRunnable er2 = new ExamRunnable("Teacher-2");
ExamRunnable er3 = new ExamRunnable("Teacher-3");
Thread t1 = new Thread(er1);
Thread t2 = new Thread(er2);
Thread t3 = new Thread(er3);
t1.start();
t2.start();
t3.start();
}
}
```
程序的运行结果如下:
```
Teacher-1分发第100份试卷
Teacher-2分发第99份试卷
Teacher-3分发第98份试卷
Teacher-1分发第97份试卷
Teacher-2分发第96份试卷
Teacher-3分发第95份试卷
Teacher-1分发第94份试卷
Teacher-2分发第93份试卷
Teacher-3分发第92份试卷
...
Teacher-2分发第2份试卷
Teacher-1分发第1份试卷
Teacher-3没有试卷了!
Teacher-1没有试卷了!
Teacher-2没有试卷了!
Teacher-3共分发了34份试卷
Teacher-1共分发了33份试卷
Teacher-2共分发了33份试卷
```
可以看到,三个老师交替执行,分别分发了不同的试卷数,而且每个老师分发的试卷数都比较接近,说明多线程程序的并发性很好。