多个线程到达,最后一个应该进行处理

时间:2017-05-23 05:51:05

标签: java multithreading concurrency java.util.concurrent atomicity

我实现了一个日志记录,其中多个线程可以写入一个List日志。最后一个线程应该将List的内容写入文件。因此,最后写入List的线程应该将List刷新到文件中。实现这一目标的最佳方法是什么?

对于List我只需要一个对多个作者和一个读者有效的并发类。

2 个答案:

答案 0 :(得分:0)

就我而言,简单的解决方案是实现Closeable,然后在close方法中进行刷新。

答案 1 :(得分:-1)

我的解决方案:

  1. 决定线程数(比如N)
  2. 以N为计数器
  3. 启动CountDownLatch
  4. 等待所有线程填充List中的值(直到count为零)
  5. 如果您愿意,现在将列表存储在主线程的文件中。

  6. 从主线程创建一个新线程并将列表存储到文件中。

  7. 请参阅以下关于CountDownLatch的使用情况的帖子:

    How is CountDownLatch used in Java Multithreading?

    java中唯一可用的并发List集合是:CopyOnWriteArrayList

      

    ArrayList的线程安全变体,其中通过创建基础数组的新副本来实现所有可变操作(添加,设置等)。