I have a linked list samples
:
protected LinkedList<RawDataset> samples = new LinkedList<RawDataset>();
I'm appending elements to the list in thread 1 like this:
this.samples.offer(data);
And I'm retrieving elements from it in a second thread like so:
public RawDataset retrieveSample() {
return this.samples.poll();
}
Would this be considered as thread-safe? Even though thread 1 and 2 are both modifying the list they only do so on either the head or the tail of the list exclusively, right?
If it isn't can anyone point me to a class in the Java API that comes with poll
/offer
and is sure to be thread-safe?
Thank you in advance.
BTW: Collections.synchronizedList(new LinkedList())
won't give me access to offer
/poll
.
offer
andpoll
are actually declard in interfaceQueue
, which is implemented by LinkedList in addition to the List interfaces. That is why these methods are not available on the result from Collections.synchronizedList. – Bakery