线程1执行完后发送消息通知线程2 - 线程2接收到消息再执行 这样的代码怎么写?
这种代码可以使用线程间的通信机制来实现,例如使用条件变量或者信号量来实现线程之间的消息传递。
下面是一个使用条件变量的示例代码:
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class ThreadCommunicationExample {
private final Lock lock = new ReentrantLock();
private final Condition condition = lock.newCondition();
private boolean isThread1Finished = false;
public void thread1() {
lock.lock();
try {
// 线程1的业务逻辑
// ...
// 执行完后设置线程1结束的标志位为true
isThread1Finished = true;
// 发送通知给线程2
condition.signal();
} finally {
lock.unlock();
}
}
public void thread2() {
lock.lock();
try {
// 如果线程1未结束,则等待通知
while (!isThread1Finished) {
condition.await();
}
// 线程2的业务逻辑
// ...
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.unlock();
}
}
}
在上述代码中,线程1执行完后会设置一个标志位isThread1Finished为true,并发送通知给线程2。线程2在收到通知后执行自己的业务逻辑。
需要注意的是,这里使用了一个锁lock来保护共享变量isThread1Finished,同时使用条件变量condition来进行线程间的通信
原文地址: https://www.cveoy.top/t/topic/hXbl 著作权归作者所有。请勿转载和采集!