У меня есть связанный список samples
:
protected LinkedList<RawDataset> samples = new LinkedList<RawDataset>();
Я добавляю элементы в список в потоке 1 следующим образом:
this.samples.offer(data);
И я извлекаю из него элементы во втором потоке, например:
public RawDataset retrieveSample() {
return this.samples.poll();
}
Будет ли это считаться потокобезопасным? Несмотря на то, что потоки 1 и 2 изменяют список, они делают это исключительно либо в начале, либо в конце списка, верно?
Если это не так, может ли кто-нибудь указать мне класс в Java API, который поставляется с poll
/offer
и обязательно будет потокобезопасным?
Заранее спасибо.
Кстати: Collections.synchronizedList(new LinkedList())
не дает мне доступ к offer
/poll
.
offer
иpoll
фактически объявлены в интерфейсеQueue
, который реализован LinkedList в дополнение к интерфейсам List. Вот почему эти методы недоступны для результата из Collections.synchronizedList. - person Jörn Horstmann   schedule 29.07.2010