java - 等待多线程时的最佳实践 - 时间、计数或其他?

标签 java multithreading

在运行时,我的应用程序将包含多个线程(在本示例中为 7)执行独立工作。然而,每隔一段时间,线程就必须同步它们的数据。

这将由线程调用它们都引用的 DataSynchronizer 对象来完成。

我对这门课的心流的想法是这样的:

public class DataSynchronizer {

    public void synchronizeData(List<Data> threadData) {
        // Wait for all 7 threads to call this method

        // When all 7 are here, hold them here & do work using one of the threads
        // or a new anonymous thread

        // Release the threads & let them continue their independent work
    }
}

我的问题是,在执行同步工作之前“等待所有 x 线程”的最佳方法是什么?

我知道所有线程都会在 1 秒内调用 synchronizeData 方法,彼此最多相隔 2 秒。

我也是,

1) 在第一个线程调用该方法后等待 2 秒,并假设所有线程现在也都已到达?或

2) 保持计数以确保所有 Activity 线程都已到达? (如果线程在调用方法之前崩溃,应用程序将永远等待)

3)计数+超时?

4) ???

最佳答案

这是一个CyclicBarrier是为了。它允许您定义线程等待所有线程到达的位置,然后可选择运行 Runnable 来执行同步或其他类似操作。

关于java - 等待多线程时的最佳实践 - 时间、计数或其他?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26712062/

相关文章:

java - 在Java中使用多线程读取数据

multithreading - 在 Delphi 中,读取 TList<x> 线程安全吗?

java - JUnit 测试中的重写方法

java - 将扫描仪对象传递给方法

java - Spring Boot 管理服务器 : App Specific Email Notification

.NET - 对单个列表(T)的多线程迭代 - 我需要注意什么?

c# - 如何在单独的线程中执行自定义类的方法调用?

java - 异常的内存分配

使用 ByteArrayStream 时 Java Applet 速度很慢

c++ - 创建一个类来存储线程并调用它们