java 创建两个线程A和B,两个线程轮流打印数字,从1打印到100。
时间: 2024-02-25 17:03:01 浏览: 173
可以使用一个共享变量来实现两个线程轮流打印数字的功能。具体实现如下:
```java
public class TwoThreadsPrintNumbers {
private static final int MAX_NUMBER = 100;
private static volatile int number = 1;
private static Object lock = new Object();
public static void main(String[] args) {
Thread threadA = new Thread(new Runnable() {
@Override
public void run() {
while (number <= MAX_NUMBER) {
synchronized (lock) {
if (number % 2 == 1) {
System.out.println(Thread.currentThread().getName() + ": " + number);
number++;
}
}
}
}
}, "ThreadA");
Thread threadB = new Thread(new Runnable() {
@Override
public void run() {
while (number <= MAX_NUMBER) {
synchronized (lock) {
if (number % 2 == 0) {
System.out.println(Thread.currentThread().getName() + ": " + number);
number++;
}
}
}
}
}, "ThreadB");
threadA.start();
threadB.start();
}
}
```
在这个代码中,我们使用了一个 `number` 变量来记录当前要打印的数字,同时使用一个 `lock` 对象来保证两个线程的互斥访问。`ThreadA` 和 `ThreadB` 轮流获得 `lock` 对象的锁,然后判断 `number` 是否符合自己的要求(奇数或偶数),如果符合则打印并将 `number` 加一。最后,当 `number` 大于最大值时,两个线程都会退出循环,结束线程的执行。
阅读全文