Зачем мне когда -либо создавать отдельный объект Mutex/Lock?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Зачем мне когда -либо создавать отдельный объект Mutex/Lock?

Сообщение Anonymous »

Я изменяю некоторый параллельный код на работе и недавно читаю документы Java о внутренних замках и синхронизации. объект для целей управления доступом к конкретному элементу? Код>, ( против Integer ) и, следовательно, не имеет внутренней блокировки, но ... предполагая, что мы обеспокоены синхронизацией какого -то статического объекта , есть ли что -нибудь, чтобы потерять? e.g. :

Код: Выделить всё

public class main {
public static void main (String[] args){
Integer foo = 10;

synchronized(foo){
foo ++;
}
}
}
Если я хочу обновить foo из нескольких потоков, синхронно, почему бы мне просто не использовать объект, который я хочу изменить? Это менее эффективно? Я вижу множество синхронизированных (это) и отдельные случаи, когда мы можем создать объект блокировки для целей синхронизации:

Код: Выделить всё

public class main {
public static void main (String[] args){
Integer foo = 10;
Object fooLock = new Object();

synchronized(fooLock){
foo ++;
}
}
}
Зачем мне создавать дураки , когда я мог бы вместо этого использовать объект фактического интереса? На самом деле это на самом деле обескуражено (не идиоматическое), или есть практическая причина, чтобы не делать этого?

Код: Выделить всё

synchronized(foo)
) для статического объекта подключения сокета, но меня касается того, что я не видел обсуждения этого. Я что -то упускаю?


Подробнее здесь: https://stackoverflow.com/questions/781 ... ock-object
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»