|
Объясните по вложенной synchronized
|
|||
---|---|---|---|
#18+
Дан класс с двумя методами, которые вызываются множеством потоков. Не принимая во внимание дедлоки, объясните, почему так нельзя использовать synchronized (вложенный), так как происходит эксепшн ErrorCountInHeap: Код: 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. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69.
Может всё таки не блокируются ресурсы heap1,heap2, но почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2018, 08:05 |
|
Объясните по вложенной synchronized
|
|||
---|---|---|---|
#18+
Я так понимаю, вся конструкция построена на предположении, что Integer мутабельный, и выражения вида heap1=0 меняют состояние, а не объект. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2018, 08:33 |
|
Объясните по вложенной synchronized
|
|||
---|---|---|---|
#18+
Alexander A. SakЯ так понимаю, вся конструкция построена на предположении, что Integer мутабельный, и выражения вида heap1=0 меняют состояние, а не объект. +1 volatile заменить на final Integer на AtomicInteger Лучше не станет, но будет немного работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2018, 09:45 |
|
Объясните по вложенной synchronized
|
|||
---|---|---|---|
#18+
kevinlexus Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
Может всё таки не блокируются ресурсы heap1,heap2, но почему?JLS8, 5.1.7 Boxing Conversion: "Ideally, boxing a primitive value would always yield an identical reference. In practice, this may not be feasible using existing implementation techniques". Требуется предсказуемость - работайте через API-класса, а не через магию компилятора. Ещё лучше - не изобретать велосипед с квадратными колёсами даже в образовательных целях. Потратьте время на изучение и использование уже существующего API. P.S. volatile на объект это осознанный шаг или "для надёжности". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2018, 10:03 |
|
|
start [/forum/topic.php?fid=59&msg=39677203&tid=2121897]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 323ms |
total: | 461ms |
0 / 0 |