В чем разница между атомным / летучим / синхронизированным?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 В чем разница между атомным / летучим / синхронизированным?

Сообщение Anonymous »

Как атомная /летучая /синхронизированная работа внутри? код 1 < /p>

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

private int counter;

public int getNextUniqueIndex() {
return counter++;
}
< /code>

код 2 < /p>

private AtomicInteger counter;

public int getNextUniqueIndex() {
return counter.getAndIncrement();
}
< /code>

code 3 < /p>

private volatile int counter;

public int getNextUniqueIndex() {
return counter++;
}
< /code>



Работает ли volatile < /code> следующим образом? < /P>

volatile int i = 0;
void incIBy5() {
i += 5;
}
< /code>

эквивалентно < /p>

Integer i = 5;
void incIBy5() {
int temp;
synchronized(i) { temp = i }
synchronized(i) { i = temp + 5 }
}
< /code>

Я думаю, что два потока не могут ввести синхронизированный блок одновременно ... Я прав? Если это правда, то как Atomic.incrementAndget () 
работает без синхронизации ? И это безопасно ли? В какой -то статье я прочитал, что в потоке есть локальная копия переменных - что это?

Подробнее здесь: https://stackoverflow.com/questions/974 ... nchronized
Ответить

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

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

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

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

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