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
.
LinkedList is not thread safe. You'd have to do the locking yourself.
Try ConcurrentLinkedQueue or LinkedBlockingDeque instead if it fits your needs, they are thread safe but slightly different behavior than LinkedList.