|
|
|
поонятие монитора в синхронизованном блоке
|
|||
|---|---|---|---|
|
#18+
в спеке написан пример. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Я так понял, что изменение переменной c1 будет мешать одновременному изменению c2, но от чего вообще защищает этот блок я не понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 09:58 |
|
||
|
поонятие монитора в синхронизованном блоке
|
|||
|---|---|---|---|
|
#18+
questioner , Что значит "мешать"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 10:03 |
|
||
|
поонятие монитора в синхронизованном блоке
|
|||
|---|---|---|---|
|
#18+
questioner... Я так понял, что изменение переменной c1 будет мешать одновременному изменению c2Нет не будет... questioner..., но от чего вообще защищает этот блок я не понимаю. От одновременного изменения защищаемого объекта из разных мест при работе в многопоточных приложениях... Что такое потоки знаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 10:03 |
|
||
|
поонятие монитора в синхронизованном блоке
|
|||
|---|---|---|---|
|
#18+
авторНет не будет... ок ок , ступил авторЧто такое потоки знаете? конечно знаю, ноавторОт одновременного изменения защищаемого объекта из разных мест при работе в многопоточных приложениях... не понятно. lock1 и lock2 ведь что-то значат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 10:10 |
|
||
|
поонятие монитора в синхронизованном блоке
|
|||
|---|---|---|---|
|
#18+
авторquestioner, Что значит "мешать"? каким-то образом влиять, заставлять ждать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 10:11 |
|
||
|
поонятие монитора в синхронизованном блоке
|
|||
|---|---|---|---|
|
#18+
questionerне понятно. lock1 и lock2 ведь что-то значатА что здесь не понятного? lock1 защищает переменную с1, а lock2 защищает переменную c2... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 10:12 |
|
||
|
поонятие монитора в синхронизованном блоке
|
|||
|---|---|---|---|
|
#18+
авторА что здесь не понятного? lock1 защищает переменную с1, а lock2 защищает переменную c2... можете показать когда(и на ЧТО) блок ставится и когда снимается и для кого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 10:14 |
|
||
|
поонятие монитора в синхронизованном блоке
|
|||
|---|---|---|---|
|
#18+
questioner, Вот представьте, по условиям задачи, Вам необходимо чтобы (1) два разных потока могли "одновременно" менять переменные с1 и с2, и (2)нельзя чтобы они могли "одновременно" менять переменную с1 либо с2. Как это сделать? Естественно, при помощи объектов блокировок. Но использовать один объект блокировки в данном случае нельзя. Потому что не будет выполнено условие 1, при котором потоки могут "одновременно" изменять переменные с1 и с2. Соответственно и применяют столько объектов блокировки сколько необходимо исходя из условий задачи... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 10:19 |
|
||
|
поонятие монитора в синхронизованном блоке
|
|||
|---|---|---|---|
|
#18+
а когда и для кого лочится секция? не понмимаю - ведь это вообще сторонняя переменная ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 10:23 |
|
||
|
поонятие монитора в синхронизованном блоке
|
|||
|---|---|---|---|
|
#18+
questionerа когда и для кого лочится секция? не понмимаю - ведь это вообще сторонняя переменнаясекция блокируется для вызывающей стороны. Т.е. при "одновременном" исполнении, тот кто чуть позже вызвал будет ждать пока секция не освободится, затем продолжится исполнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 10:25 |
|
||
|
поонятие монитора в синхронизованном блоке
|
|||
|---|---|---|---|
|
#18+
Alex Kuznetsov, а можете в ващем объяснении указать слова lock1 и lock2 из первого поста? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 10:27 |
|
||
|
поонятие монитора в синхронизованном блоке
|
|||
|---|---|---|---|
|
#18+
questionerAlex Kuznetsov, а можете в ващем объяснении указать слова lock1 и lock2 из первого поста?Не вопрос: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. когда в потоке th1 (thread1) происходит вызов msLunch.inc1, то устанавливается блокировка с использованием объекта lock1. Теперь допустим, что код в потоке th2(thread2) также следом вызвал msLunch.inc1. При этом будет произведена попытка установить блокировку опять-же с использованием объекта lock1, НО он уже блокирован, соответственно программа войдёт в режим ожидания до тех пор пока не завершится исполнение метода msLunch.inc1 вызванного из th1 (thread1). По завершении исполнения метода msLunch.inc1 произойдёт разблокировка объекта lock1 и возврат к исполнению msLunch.inc1 вызванного из th2(thread2). Т.е. схематично: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Вот как-то так. А теперь попробуйте также разрисовать одновременные вызовы inc1 и inc2 из разных потоков, учитывая что они пользуются разными объектами блокировок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 12:06 |
|
||
|
поонятие монитора в синхронизованном блоке
|
|||
|---|---|---|---|
|
#18+
сорри, следует читать не "соответственно программа войдёт в режим ожидания ", а "соответственно поток th2 войдёт в режим ожидания " ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 12:07 |
|
||
|
поонятие монитора в синхронизованном блоке
|
|||
|---|---|---|---|
|
#18+
спасибо, теперь понятно) была проблема в том, что я не думал, что msLunch будет разделяться между всеми объектами класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 12:19 |
|
||
|
поонятие монитора в синхронизованном блоке
|
|||
|---|---|---|---|
|
#18+
questionerспасибо, теперь понятно) была проблема в том, что я не думал, что msLunch будет разделяться между всеми объектами класса. Пожалуйста. Вообще-то блокировками защищают любые разделяемые объекты, используемые в многопоточных приложениях. Дабы не было проблем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 12:33 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38564247&tid=2127629]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
152ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 460ms |

| 0 / 0 |
