|
|
|
Выбор объекта для synchronyzed(...)
|
|||
|---|---|---|---|
|
#18+
Вот упрощенный кусок кода: Код: 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. Методы класса вызываются из разных потоков. В данном варианте работает корректно, но если вместо synchronized(taskSet) везде поставить synchronized(lockObject), то работать будет по другому (некорректно). Может кто кратко объяснить почему так происходит? Если для всех блоков синхронизации используется один и тот же объект, зависит ли выполнение от того, что это за объект? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 17:55 |
|
||
|
Выбор объекта для synchronyzed(...)
|
|||
|---|---|---|---|
|
#18+
Может у вас ссылка на taskSet где-то утекает. Какие ещё методы у этого класса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:59 |
|
||
|
Выбор объекта для synchronyzed(...)
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, taskSet используется только в этих методах и только внутри synchronized. Единственное исключение: Код: java 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 16:45 |
|
||
|
Выбор объекта для synchronyzed(...)
|
|||
|---|---|---|---|
|
#18+
publexus, А если этот метод тоже синхронизировать по lockObject ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 17:09 |
|
||
|
Выбор объекта для synchronyzed(...)
|
|||
|---|---|---|---|
|
#18+
Blazkowiczpublexus, А если этот метод тоже синхронизировать по lockObject ? Результат тот же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 11:46 |
|
||
|
Выбор объекта для synchronyzed(...)
|
|||
|---|---|---|---|
|
#18+
publexus, Простите, а что значит некорректно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 11:52 |
|
||
|
Выбор объекта для synchronyzed(...)
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньевpublexus, Простите, а что значит некорректно? Изменением всего лишь объекта блокировки, потоки задач либо выполнялись до конца, либо самопроизвольно завершались. Смотрите тему по поводу завершения потоков тут . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 14:10 |
|
||
|
Выбор объекта для synchronyzed(...)
|
|||
|---|---|---|---|
|
#18+
publexusИзменением всего лишь объекта блокировки, потоки задач либо выполнялись до конца, либо самопроизвольно завершались. Смотрите тему по поводу завершения потоков тут . Вы сильно путаете потоки и задачи. Thread это поток. Callable/Runnable это не поток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 14:14 |
|
||
|
Выбор объекта для synchronyzed(...)
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВы сильно путаете потоки и задачи. Thread это поток. Callable/Runnable это не поток. Я запускал задачи отдельными потоками через Executors.newCachedThreadPool(). После исправления по вашему совету нормально заработало при разных объектах блокировки. Как это взаимосвязано - я пока не понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:03 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38780092&tid=2126435]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
193ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 245ms |
| total: | 550ms |

| 0 / 0 |
