用java语言写出三个线程循环打印a,b,c
时间: 2023-10-23 08:11:55 浏览: 123
当然,我可以帮你编写一个Java程序,用三个线程循环打印a、b、c。以下是一个简单的实现示例:
```java
class PrintThread implements Runnable {
private static final Object lock = new Object();
private static volatile char currentChar = 'a';
private char printChar;
public PrintThread(char printChar) {
this.printChar = printChar;
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
synchronized (lock) {
while (currentChar != printChar) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.print(printChar);
if (currentChar == 'c') {
System.out.println(); // 换行
}
currentChar = (char) (currentChar + 1 > 'c' ? 'a' : currentChar + 1);
lock.notifyAll();
}
}
}
}
public class Main {
public static void main(String[] args) {
Thread threadA = new Thread(new PrintThread('a'));
Thread threadB = new Thread(new PrintThread('b'));
Thread threadC = new Thread(new PrintThread('c'));
threadA.start();
threadB.start();
threadC.start();
}
}
```
上述代码中,我们定义了一个名为`PrintThread`的线程类,它实现了`Runnable`接口。每个线程都会打印出一个特定的字符,共循环打印10次。通过`synchronized`关键字和`wait()`、`notifyAll()`方法来实现线程间的同步和互斥。在`run()`方法中,每个线程会判断当前应该打印的字符是否为自己负责打印的字符,如果不是,则线程进入等待状态。当轮到自己打印时,输出相应的字符,并使用`notifyAll()`方法唤醒其他线程。最后,主函数中创建三个线程,并启动它们。
运行以上代码,你会看到输出结果为:
```
abc
abc
abc
...
```
希望这能帮到你!如果你还有其他问题,请随时提问。
阅读全文