【问题标题】:synchronizing ArrayList and wait同步 ArrayList 并等待
【发布时间】:2014-11-21 12:04:03
【问题描述】:

我正在同步 2 个线程使用的 ArrayList。通知和等待模式。线程通知但 arrayList 包含旧值虽然另一个线程打印新值。

Th1:

  synchronized( pairsBarBuffers ) {

            try {
                pairsBarBuffers.wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

Th2:

    synchronized (pairs15MBarBuffers) {

         if( countSamples == 0 ){
             return;
         }

        updateBarBuffer( pairs15MBarBuffers , countSamples );

        pairs15MBarBuffers.notify();

        countSamples = 0;   

    }

【问题讨论】:

  • 您的代码示例没有任何意义。似乎使用了两个不同的列表?请发布一个可编译的示例来演示该问题(请参阅stackoverflow.com/help/mcve)。
  • 我无法发布所有代码,它很大。基本上我传递相同的数组(引用)只是每个线程中的名称不同。
  • 您阅读我提供的链接了吗?如果你有,你会意识到我并没有要求你提供所有的代码。

标签: java multithreading arraylist


【解决方案1】:

显式同步有两种方式:

Using Collections.synchronizedList() method
Using thread-safe variant of ArrayList: CopyOnWriteArrayList

【讨论】:

    猜你喜欢
    • 2017-04-21
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多