使用wait/notify机制可以实现线程之间的交替工作。wait/notify是Java中用于线程间通信的机制,通过它们可以实现线程的等待和唤醒操作。
具体的实现步骤如下:
下面是一个简单的示例代码:
public class AlternateThreads {
private final Object lock = new Object();
private boolean condition = false;
public void thread1() {
synchronized (lock) {
while (!condition) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 线程1的工作内容
System.out.println("Thread 1 is working");
condition = false;
lock.notifyAll();
}
}
public void thread2() {
synchronized (lock) {
while (condition) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 线程2的工作内容
System.out.println("Thread 2 is working");
condition = true;
lock.notifyAll();
}
}
public static void main(String[] args) {
AlternateThreads alternateThreads = new AlternateThreads();
Thread t1 = new Thread(() -> {
for (int i = 0; i < 5; i++) {
alternateThreads.thread1();
}
});
Thread t2 = new Thread(() -> {
for (int i = 0; i < 5; i++) {
alternateThreads.thread2();
}
});
t1.start();
t2.start();
}
}
在上述示例中,通过使用wait/notify机制,线程1和线程2将交替执行。线程1在满足条件时执行工作内容,并将条件设置为false,然后唤醒等待的线程2。线程2在条件不满足时等待,当被唤醒时执行工作内容,并将条件设置为true,然后唤醒等待的线程1。
这种方式可以用于多个线程之间的协调工作,例如生产者-消费者模型、任务分配等场景。
腾讯云相关产品和产品介绍链接地址:
小程序·云开发官方直播课(数据库方向)
云+社区技术沙龙[第21期]
DBTalk
DB・洞见
技术创作101训练营
Elastic 中国开发者大会
云+社区技术沙龙[第9期]
腾讯云GAME-TECH沙龙
技术创作101训练营
腾讯位置服务技术沙龙
领取专属 10元无门槛券
手把手带您无忧上云