Как безопасно сбросить ценность AtomicInteger в очень многопоточной среде? [закрыто]JAVA

Программисты JAVA общаются здесь
Anonymous
Как безопасно сбросить ценность AtomicInteger в очень многопоточной среде? [закрыто]

Сообщение Anonymous »

Реализация класса ниже завершает два поля Atomicinteger . После достижения значения MAX = 9999 основной номер последовательности, как ожидается, сбросится до нуля. Когда номер последовательности сбрасывается, с RESETCount < /code> должен быть увеличен на один.

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

public class SequenceGenerator {

private static final SequenceGenerator GENERATOR = new SequenceGenerator();
private final AtomicInteger sequence = new AtomicInteger(0);
private final AtomicInteger resetCount = new AtomicInteger(0);

private SequenceGenerator() {}

public static SequenceGenerator getInstance() {

return GENERATOR;
}

/**
* This method a unique sequenceId that follow this format
* [ResetCount-SequenceNumber]. The SequenceNumber range is [0000,9999]
* and every time the max value 9999 exceeds, it will reset back to zero
* and the ResetCount value will increase by one.
*
* @return a unique sequenceId in literal format
*/
public String generateSequenceId() {

while (true) {

int local = sequence.getAndIncrement();

if (local 
Я обновил метод выше, и, надеюсь, это согласно спецификациям и защитным потокам < /p>
private final AtomicInteger sequence = new AtomicInteger(0);
private final AtomicInteger resetCount = new AtomicInteger(0);
private final Object resetLock = new Object();

public String generateSequenceId() {

while (true) {

int local = sequence.getAndIncrement();

if (local =10000){

sequence.set(0);
resetCount.incrementAndGet();
}
}
}
}
}
< /code>
В последнем обновлении кода предложение заключается в том, что номер сброса номера последовательности сброса и сброса находится внутри синхронизированного блока. Только один поток запускает сброс последовательности и увеличивает количество сброса.> 

Подробнее здесь: [url]https://stackoverflow.com/questions/79475109/how-to-safely-reset-atomicinteger-value-in-highly-multithreaded-environment[/url]

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