|
|
|
синхронизация потоков
|
|||
|---|---|---|---|
|
#18+
Если первый поток сначала зайдет в метод log-v2, то он получает блокировку на весь объект и пока этот поток выаолняется, второй поток не сможет войти в log-v1. Что будет, если первый поток сначала зайдет в метод log-v1, это же блокирует только метод? Тогда второй поток сможет войти в log-v2? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 08:44 |
|
||
|
синхронизация потоков
|
|||
|---|---|---|---|
|
#18+
rema174, Есть подозрение, что на уровне байт-кода блокировка в этих методах ничем не отличается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 09:03 |
|
||
|
синхронизация потоков
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, на самом деле, там где я выдернул этот код было так и написано, что возможен только один поток при таком раскладе, просто хотелось разобраться. я так понимаю, что синхронизация метода болкирует все ресурсы внутри метода и это не даст второму потоку войти в log-v2 есть подозление, что на форуме примерно один из 30 сечёт в чем дело ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 10:18 |
|
||
|
синхронизация потоков
|
|||
|---|---|---|---|
|
#18+
rema174на самом деле, там где я выдернул этот код было так и написано, что возможен только один поток при таком раскладе, просто хотелось разобраться. я так понимаю, что синхронизация метода болкирует все ресурсы внутри метода и это не даст второму потоку войти в log-v2 А какая разница второму потоку где стоят? Перед/во время вызова или уже внутри метода? Плюс существует оптимизатор в компиляторе. Он вполне данный код может сделать 100% одинаковым с точки зрения байт кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 10:58 |
|
||
|
синхронизация потоков
|
|||
|---|---|---|---|
|
#18+
rema174это же блокирует только метод? Нет jvn в обоих случаях блокирует монитор. Монитором для не статического метода является сам экземпляр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 12:46 |
|
||
|
синхронизация потоков
|
|||
|---|---|---|---|
|
#18+
Blazkowiczrema174, Есть подозрение, что на уровне байт-кода блокировка в этих методах ничем не отличается.Отличается, если верить этой статье ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 12:48 |
|
||
|
синхронизация потоков
|
|||
|---|---|---|---|
|
#18+
UsmanBlazkowiczrema174, Есть подозрение, что на уровне байт-кода блокировка в этих методах ничем не отличается.Отличается, если верить этой статье А не надо верить всему что на хабре пишут. Пару лет назад много баянов порвали по этой теме. Отличается вывод байткода а в рантайме все будет одинаково, от monitorenter\monitorexit никуда не уйдешь. Просто в первом случае компилятор добавляет их в метаинформацию, а во втором случае прямо в байткоде. В любом случае при выполнении там будет мемори барьер. К сожалению это было давно и пруф мне лень искать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 13:05 |
|
||
|
синхронизация потоков
|
|||
|---|---|---|---|
|
#18+
забыл никUsmanпропущено... Отличается, если верить этой статье А не надо верить всему что на хабре пишут. Пару лет назад много баянов порвали по этой теме. Отличается вывод байткода а в рантайме все будет одинаково, от monitorenter\monitorexit никуда не уйдешь. Просто в первом случае компилятор добавляет их в метаинформацию, а во втором случае прямо в байткоде. В любом случае при выполнении там будет мемори барьер. К сожалению это было давно и пруф мне лень искать А впрочем все это как раз есть в комментариях к той статье :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 13:11 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39212466&tid=2124173]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
93ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 253ms |
| total: | 454ms |

| 0 / 0 |
