Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Понимание synchronized / 10 сообщений из 10, страница 1 из 1
26.02.2013, 12:04:08
    #38166100
mre
mre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание synchronized
Привет, вроде почитал много о синхронизации, но так до конца и не понял.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public boolean assault(User target)
{
    synchronized (target)
    {
        if (target.battle > 0)
        {
            Battle tmpBattle = battles.get(target.battle);
            //операции с tmpBattle
        }
        else
        {
             //здесь код, который начинает бой и задается target.battle
        }
    }
}



Могут ли быть изменены свойства tmpBattle внутри synchronized другими потоками или весь код в блоке synchronized будет выполняться последовательно потоками.
...
Рейтинг: 0 / 0
26.02.2013, 12:23:42
    #38166142
VladislavVV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание synchronized
mre, если метод синхронизирован - то к нему имеет доступ только 1 поток
...
Рейтинг: 0 / 0
26.02.2013, 12:29:59
    #38166155
mre
mre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание synchronized
Если синхронизируется весь код внутри блока, то для чего указывать объект блокировки?
...
Рейтинг: 0 / 0
26.02.2013, 13:14:12
    #38166253
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание synchronized
mreЕсли синхронизируется весь код внутри блока, то для чего указывать объект блокировки?
"объект блокировки" это "монитор". Для одного и того же монитора, блок будет выполняться только одним потоком. Если мониторы разные, то возможно паралельное исполнени для каждого монитора. Зачастую удобнее использовать Lock, а не synchronized.
...
Рейтинг: 0 / 0
26.02.2013, 14:06:09
    #38166372
mre
mre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание synchronized
Ага, понятно, монитор - это конкретный экземпляр, а для статических методов монитор будет конкретным классом?
...
Рейтинг: 0 / 0
26.02.2013, 14:07:38
    #38166377
oneHalf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание synchronized
Короче - ответ - внутри представленного блока все будет ок, все будет последовательно. Правило простое - один монитор - один поток.
...
Рейтинг: 0 / 0
26.02.2013, 14:11:02
    #38166392
oneHalf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание synchronized
авторАга, понятно, монитор - это конкретный экземпляр, а для статических методов монитор будет конкретным классом?
Ну точнее объектом типа "класс" - работать будет если используется один класслоэдер, если, вдруг, разные то и объекты получаться разные.
...
Рейтинг: 0 / 0
26.02.2013, 14:12:35
    #38166398
mre
mre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание synchronized
Все, я понял, всем спасибо!
...
Рейтинг: 0 / 0
26.02.2013, 14:31:47
    #38166454
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание synchronized
mreПривет, вроде почитал много о синхронизации, но так до конца и не понял.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public boolean assault(User target)
{
    synchronized (target)
    {
        if (target.battle > 0)
        {
            Battle tmpBattle = battles.get(target.battle);
            //операции с tmpBattle
        }
        else
        {
             //здесь код, который начинает бой и задается target.battle
        }
    }
}



Могут ли быть изменены свойства tmpBattle внутри synchronized другими потоками или весь код в блоке synchronized будет выполняться последовательно потоками.

public synchronized boolean assault(User target) {
//синхронайзд метода равносилен synchronized (this) - и всего - то. Удобне, конечно, использовать посторонний объект, нежели this.
}
...
Рейтинг: 0 / 0
26.02.2013, 19:34:26
    #38167069
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание synchronized
mreМогут ли быть изменены свойства tmpBattle внутри synchronized другими потоками или весь код в блоке synchronized будет выполняться последовательно потоками.
Да, если найдутся два таргета, у которых поля батл равны.

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


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