Отношение Happend-Before устанавливается в нескольких случаях. Мы рассмотрели 3 из них (не все):
1. Если один поток записал в volatile переменную, а другой считал из нее же (две записи, два чтения, чтение потом запись не устанавливают отношние).
2. Если один поток выполнил Thread.start(), а второй - это стартонувший поток. Если один поток вышел из своего метода run() а второй ожидал его окончания по Thread.join().
3. Если один поток освободил монитор объекта(вышел из синхронизированной секции), а второй захватил монитор того же объекта (вошел в синхронизированную секцию).
пятница, 25 сентября 2009 г.
Подписаться на:
Комментарии к сообщению (Atom)
Re: Если один поток записал в volatile переменную, а другой считал из нее же...
ОтветитьУдалить... значение записанное первым потоком.
Да, конечно. Пожалуй даже стоит это как-то еще расширить. Иначе не совсем понятно, что значит "значение записанное первым потоком". Я бы зазвал это АА-проблема. Если в переменной было значение A и первый поток записываем туда A, то второй поток не может узнать считал ли он первое А или второе А:)
ОтветитьУдалить