QQ扫一扫联系
Java实现两个线程交替打印
在多线程编程中,实现两个线程交替打印输出是一个经典的问题。这种情况下,我们通常使用线程间的通信来协调两个线程的执行顺序。本文将介绍如何使用Java来实现两个线程交替打印的问题。
在Java中,可以使用wait
和notify
方法来实现线程的等待和唤醒机制。下面是一个使用wait
和notify
方法来交替打印奇偶数的示例:
public class AlternatePrinting {
private static final Object lock = new Object();
private static int count = 1;
public static void main(String[] args) {
Thread oddThread = new Thread(AlternatePrinting::printOdd);
Thread evenThread = new Thread(AlternatePrinting::printEven);
oddThread.start();
evenThread.start();
}
public static void printOdd() {
synchronized (lock) {
try {
while (count <= 10) {
if (count % 2 != 0) {
System.out.println("Odd: " + count);
count++;
lock.notify();
} else {
lock.wait();
}
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
public static void printEven() {
synchronized (lock) {
try {
while (count <= 10) {
if (count % 2 == 0) {
System.out.println("Even: " + count);
count++;
lock.notify();
} else {
lock.wait();
}
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}
在这个示例中,我们使用一个共享的lock
对象来实现线程间的同步。printOdd
和printEven
方法分别负责打印奇数和偶数,通过wait
和notify
方法来协调两个线程的执行。
wait
和notify
时,需要确保线程释放了锁,以允许其他线程进入临界区。wait
,以防止虚假唤醒情况。通过使用wait
和notify
方法,您可以在Java中实现两个线程的交替打印。这种方法充分利用了线程间的通信机制,确保了线程的协调和同步。通过合适地使用同步机制,您可以实现多线程编程中更复杂的问题,提高程序的并发性和性能。