java两个线程轮流打印数字,一直到100。
时间: 2024-02-25 15:09:08 浏览: 30
好的,这里给出一个使用Java语言的实现示例。
```java
class PrintNumbers {
private int n = 0;
private final Object lock = new Object();
public void printEven() {
while (n <= 100) {
synchronized (lock) {
if (n % 2 == 0) {
System.out.println(n);
n++;
}
}
}
}
public void printOdd() {
while (n <= 100) {
synchronized (lock) {
if (n % 2 == 1) {
System.out.println(n);
n++;
}
}
}
}
}
public class Main {
public static void main(String[] args) {
PrintNumbers printer = new PrintNumbers();
Thread t1 = new Thread(() -> {
printer.printEven();
});
Thread t2 = new Thread(() -> {
printer.printOdd();
});
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
```
在这个程序中,PrintNumbers类有一个共享变量n和一个Object对象作为锁,printEven()和printOdd()方法分别打印偶数和奇数。它们都使用synchronized关键字来获取锁对象并检查n的值是否是偶数或奇数,如果是则打印并增加n的值。主程序创建了两个线程,一个调用printEven()方法,另一个调用printOdd()方法,并等待两个线程完成执行。