tag:blogger.com,1999:blog-410416665291724878.post1950207294807031152..comments2022-12-19T13:52:22.907+04:00Comments on >рабочие заметки: Зачем synchronized вокруг wait/notify?Ruslan Chereminhttp://www.blogger.com/profile/01023948540752159657noreply@blogger.comBlogger11125tag:blogger.com,1999:blog-410416665291724878.post-63989670595441061062014-05-27T16:07:18.810+04:002014-05-27T16:07:18.810+04:00Когда переменная одна, и извещение однократное -- ...Когда переменная одна, и извещение однократное -- да, volatile достаточно. Если состояние не ограничивается одной переменной, и/или ожидание-извещение повторяется многократно -- умучаетесь реализовывать это корректно на volatile-ах. Ruslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-57812756315952475912014-05-27T16:04:48.969+04:002014-05-27T16:04:48.969+04:00Мне здесь как раз не понятно, что значит "не ...Мне здесь как раз не понятно, что значит "не увидеть"? Какой конкретно сценарий подразумевается?Ruslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-57730576048502709102014-05-27T16:02:59.740+04:002014-05-27T16:02:59.740+04:00Область применимости wait/notify без синхронизации...Область применимости wait/notify без синхронизации крайне узка. По-сути, я сомневаюсь, что найдется больше пары случаев, где они полезны, и отсутствие синхронизации даст хоть какой-то профит.Ruslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-89880919095461556432014-05-21T21:57:00.238+04:002014-05-21T21:57:00.238+04:00На мой взгляд самый логичное из объяснений:
Взято ...На мой взгляд самый логичное из объяснений:<br />Взято со stackoverflow:<br />Что поток который находиться в состоянии wait, попросту может не увидеть сообщение notify, из другого потока без синхронизации.Anonymoushttps://www.blogger.com/profile/13580100077380323603noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-49322038360227576962014-05-21T21:51:38.004+04:002014-05-21T21:51:38.004+04:00А мне вот, всё равно не понятно, почему нельзя исп...А мне вот, всё равно не понятно, почему нельзя использовать volatile, так как это препятствует как кэшированию объекта так и процедуре reordering.<br />Так почему же не volatile?Anonymoushttps://www.blogger.com/profile/13580100077380323603noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-55725429368174979722014-05-21T21:45:35.645+04:002014-05-21T21:45:35.645+04:00Немножко не понятно: вы объясняли зачем привязыват...Немножко не понятно: вы объясняли зачем привязывать жёстко к synchronized:<br />Но зачем так плотно привязывать wait/notify к synchronized?<br />"потому что wait должен уметь этот монитор сначала отпустить на входе" какой монитор?? Если без синхронизации то нету никакого монитора.Anonymoushttps://www.blogger.com/profile/13580100077380323603noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-19963924564954879952013-03-18T23:10:01.293+04:002013-03-18T23:10:01.293+04:00А, я понял! При соблюдении этих условий, memory mo...А, я понял! При соблюдении этих условий, memory model со своим happens-before гарантирует синхронизацию всех кэшей с памятью.Filipp Volodinhttps://www.blogger.com/profile/04210950860066296913noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-48083538381965526642013-03-18T22:47:56.101+04:002013-03-18T22:47:56.101+04:00Ну как бы monitor enter/exit это synchronization a...Ну как бы monitor enter/exit это synchronization action, и monitorExit synchronizedWith monitorEnter. Это и дает основание утверждать, что вы увидите во втором потоке значение, записанное в первом. Это очень вкратце если )Ruslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-83342249273106091212013-03-18T22:36:20.258+04:002013-03-18T22:36:20.258+04:00Супер! Спасибо!
Только есть наивный вопрос. Почем...Супер! Спасибо! <br />Только есть наивный вопрос. Почему condition не volatile? Как synchronized препятствует кэшированию переменной?Filipp Volodinhttps://www.blogger.com/profile/04210950860066296913noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-7731653448456512552012-04-05T23:08:44.243+04:002012-04-05T23:08:44.243+04:00Пожалуйста, рад что пригодилосьПожалуйста, рад что пригодилосьRuslan Chereminhttps://www.blogger.com/profile/01023948540752159657noreply@blogger.comtag:blogger.com,1999:blog-410416665291724878.post-27847855721484671622012-04-05T14:40:36.486+04:002012-04-05T14:40:36.486+04:00Руслан, спасибо за хорошую статью!Руслан, спасибо за хорошую статью!Ольгаhttps://www.blogger.com/profile/08675464182829827339noreply@blogger.com