Я изменяю некоторый параллельный код на работе и недавно читаю документы 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 ++;
}
}
}
Зачем мне создавать дураки , когда я мог бы вместо этого использовать объект фактического интереса? На самом деле это на самом деле обескуражено (не идиоматическое), или есть практическая причина, чтобы не делать этого?
) для статического объекта подключения сокета, но меня касается того, что я не видел обсуждения этого. Я что -то упускаю?
Подробнее здесь:
https://stackoverflow.com/questions/781 ... ock-object