这种代码可以使用线程间的通信机制来实现,例如使用条件变量或者信号量来实现线程之间的消息传递。

下面是一个使用条件变量的示例代码:

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来进行线程间的通信

线程1执行完后发送消息通知线程2 - 线程2接收到消息再执行 这样的代码怎么写?

原文地址: https://www.cveoy.top/t/topic/hXbl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录