Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

synchronized & volatile

1.0K
15 июля 2007 года
diesel_den
169 / / 22.12.2005
Есть непонятки, хотя прочитано много литературы.
1) написано, что при входе в блок synchronized локальный кеш
считается недействительным и переменным присваиваются значения из
"main-memory". Выходит что переменной task вернётся то
значение, которое было у неё до этого:
class ... {
Task task = new Task();
public int exec() {
task = new Task();
synchronized () {...
2) что будет с переменной tmp, если после
её инициализации но до входа в блок synchronized значение x будет изменено другим потоком ?
int x = 10;
public int exec() {
int tmp = x;
3.7K
16 июля 2007 года
bioflash
169 / / 01.10.2005
Мне кажется здесь немного плутаница вишла: первий пример относительно переменной инстанса класа, а второй относительно простой переменной. Ну и результат будет мне кажеться соответственний: переменная инстанса класа только содержит посилание на инстанс + переменная task не локальная, а переменная tmp локальная. И я думаю, что в таком примере как ти написал, переменная tmp просто будет имет значение которим она била проинициализированная (10).
1.0K
17 июля 2007 года
diesel_den
169 / / 22.12.2005
Ну на счёт второго случая я так и думал,
а вот по первому я нашёл источник, в котором было
написано, что локальные копии flash-аться, то есть
применются к "main-memory" а не наоборот.
Наверно "считается недействительным" - просто
плохой перевод слова flash.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог