'Is volatile enough for changing reference to a list?
Let's say we have a list reference:
volatile List<Object> a;
now thread 1 initializes it:
List<Object> newA = new LinkedList<>();
newA.add(new String("a"));
// Write to a volatile
a = newA;
then thread 2 does:
// first we read a volatile reference value, then invoke .get() method on it.
Object o = a.get(0);
Is "o" guaranteed to refer to the string added by the thread 1? Or am I missing something? Assuming that the code from the thread 1 is executed before the code from the thread 2.
Solution 1:[1]
YES,if Thread1 is executed before the Thread2 then it will provide the guarantee.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Kick |
