可以使用synchronized關鍵字和wait()、notify()方法來實現兩個線程交替打印。下面是一個示例代碼:
public class AlternatePrint {
private static Object lock = new Object();
private static int count = 1;
private static int maxCount = 10;
public static void main(String[] args) {
Thread t1 = new Thread(() -> {
while (count <= maxCount) {
synchronized (lock) {
if (count % 2 == 1) {
System.out.println(Thread.currentThread().getName() + ": " + count);
count++;
lock.notify();
} else {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
});
Thread t2 = new Thread(() -> {
while (count <= maxCount) {
synchronized (lock) {
if (count % 2 == 0) {
System.out.println(Thread.currentThread().getName() + ": " + count);
count++;
lock.notify();
} else {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
});
t1.setName("Thread-1");
t2.setName("Thread-2");
t1.start();
t2.start();
}
}
在這個示例中,我們創建了兩個線程t1和t2,它們交替打印1到10的數字。使用synchronized關鍵字和wait()、notify()方法來確保兩個線程能夠交替執行。當一個線程打印完數字后,會調用notify()方法通知另一個線程可以執行,然后自己進入等待狀態。這樣就實現了兩個線程交替打印的效果。