Skip to content Skip to sidebar Skip to footer

Is The Volatile Mark Necessary For A Queue With One Thread Adding And Another Reading?

in response to some comments in this thread, I am wondering if making a queue that will have one thread adding to it and another thread reading from it requires the 'volatile' mark

Solution 1:

Use lock objects if you want synchronized access like you've mentioned.

Volatile is not really used in this context. Declaring your List myList object as volatile would mean that if you ever tried to instantiate a new Object and set it to the myList variable, then the thread would be guaranteed to know that there is a new object assigned to it (roughly). It doesn't block or synchronize anything to do with the actual object.

Basically, like you said, you need to be sure that when you are reading or writing to the list, that nothing will mess the list up and cause an unexpected error. For stopping two things from happening at the same time, use lock objects and the Java synchronized keyword, or use a List type that already synchronizes read/writes for you.

Post a Comment for "Is The Volatile Mark Necessary For A Queue With One Thread Adding And Another Reading?"