java - 如何通知另一个线程

标签 java multithreading

我想知道如何通知另一个线程的最佳方式。比如我有一个后台线程:

public void StartBackgroundThread(){
new Thread(new Runnable() {         
        @Override
        public void run() {
            //Do something big...
            //THEN HOW TO NOTIFY MAIN THREAD?
        }
    }).start();
}

当它完成时必须通知主线程?如果有人知道如何做到这一点的最佳方式,我将不胜感激!

最佳答案

典型的答案是 BlockingQueueBackgroundThread(通常称为 Producer)和 MainThread(通常称为 Consumer)共享队列的单个实例(也许它们在实例化时得到它)。 BackgroundThread 每次有新消息时调用 queue.put(message) 并且 MainThread 调用 'queue.take() 这将阻塞直到有消息要接收。您可能会喜欢超时和窥视,但通常人们需要一个BlockingQueue实例,例如ArrayBlockingQueue`。

关于java - 如何通知另一个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14329654/

相关文章:

java - 构建失败并显示 'Program type already present: android.arch.core.util.Function' - Firebase 依赖项问题

java - 如何解决 Eclipse 中的导入问题?

multithreading - Servlet 线程池 vs Servlet 实例池 - 通过 Web 容器

ruby - `Thread.current.object_id` 可以在线程本身内部更改吗?

java - 如何成功返回 mp3 文件的元数据,同时避免空指针异常

java - Spring MVC 验证状态 400

java - RoadModel.getDistanceOfPath(RoadModel.getShortestPath(Vehicle, Point)) 错误

java - 为什么多个线程能够访问同步块(synchronized block)?

python - python中的非阻塞类(分离线程)

c# - 从 BackgroundWorker 开始获取响应