powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / синхронизация потоков
8 сообщений из 8, страница 1 из 1
синхронизация потоков
    #39212156
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если первый поток сначала зайдет в метод 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.
public class SampleClass {

    private Logger log;
  
    public synchronized void log-v1(String msg01, String msg02){
       log.writeln(msg01);
       log.writeln(msg02);
    }

  
    public void log-v2(String msg01, String msg02){
       synchronized(this){
          log.writeln(msg01);
          log.writeln(msg02);
       }
    }

  }
...
Рейтинг: 0 / 0
синхронизация потоков
    #39212172
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,

Есть подозрение, что на уровне байт-кода блокировка в этих методах ничем не отличается.
...
Рейтинг: 0 / 0
синхронизация потоков
    #39212261
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

на самом деле, там где я выдернул этот код было так и написано, что возможен только один поток при таком раскладе, просто хотелось разобраться. я так понимаю, что синхронизация метода болкирует все ресурсы внутри метода и это не даст второму потоку войти в log-v2

есть подозление, что на форуме примерно один из 30 сечёт в чем дело
...
Рейтинг: 0 / 0
синхронизация потоков
    #39212305
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174на самом деле, там где я выдернул этот код было так и написано, что возможен только один поток при таком раскладе, просто хотелось разобраться. я так понимаю, что синхронизация метода болкирует все ресурсы внутри метода и это не даст второму потоку войти в log-v2
А какая разница второму потоку где стоят? Перед/во время вызова или уже внутри метода?

Плюс существует оптимизатор в компиляторе. Он вполне данный код может сделать 100% одинаковым с точки зрения байт кода.
...
Рейтинг: 0 / 0
синхронизация потоков
    #39212466
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174это же блокирует только метод?
Нет jvn в обоих случаях блокирует монитор.
Монитором для не статического метода является сам экземпляр.
...
Рейтинг: 0 / 0
синхронизация потоков
    #39212468
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczrema174,

Есть подозрение, что на уровне байт-кода блокировка в этих методах ничем не отличается.Отличается, если верить этой статье
...
Рейтинг: 0 / 0
синхронизация потоков
    #39212480
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmanBlazkowiczrema174,

Есть подозрение, что на уровне байт-кода блокировка в этих методах ничем не отличается.Отличается, если верить этой статье

А не надо верить всему что на хабре пишут. Пару лет назад много баянов порвали по этой теме. Отличается вывод байткода а в рантайме все будет одинаково, от monitorenter\monitorexit никуда не уйдешь. Просто в первом случае компилятор добавляет их в метаинформацию, а во втором случае прямо в байткоде. В любом случае при выполнении там будет мемори барьер. К сожалению это было давно и пруф мне лень искать
...
Рейтинг: 0 / 0
синхронизация потоков
    #39212486
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никUsmanпропущено...
Отличается, если верить этой статье

А не надо верить всему что на хабре пишут. Пару лет назад много баянов порвали по этой теме. Отличается вывод байткода а в рантайме все будет одинаково, от monitorenter\monitorexit никуда не уйдешь. Просто в первом случае компилятор добавляет их в метаинформацию, а во втором случае прямо в байткоде. В любом случае при выполнении там будет мемори барьер. К сожалению это было давно и пруф мне лень искать

А впрочем все это как раз есть в комментариях к той статье :)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / синхронизация потоков
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]