2014-11-21 2 views
-4

Я синхронизирую ArrayList, используемый 2 потоками. уведомлять и ждать. поток уведомлен, но массивList содержит старые значения. Хотя другой поток печатает новые значения.Синхронизация 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; 

    } 
+1

Ваши примеры кода не делать какие-либо смысл. Кажется, используются два разных списка? Отправьте компилятивный пример, демонстрирующий проблему (см. Http://stackoverflow.com/help/mcve). –

+0

Я не могу опубликовать весь код его огромный. в основном im, проходящий один и тот же массив (ссылка), только имя различно в каждом из потоков. – user4191784

+0

Вы прочитали ссылку, которую я предоставил? Если бы у вас было, вы бы поняли, что я не просил весь ваш код. –

ответ

1

Есть два способа синхронизации в явном виде:

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

Вот a link for your reference

Смежные вопросы