W jaki sposób używać AtomicInteger do ograniczonego generowania sekwencji, powiedzmy, że numer sekwencji musi wynosić od 1 do 60. Gdy sekwencja osiągnie 60, musi zacząć od nowa 1. Napisałem ten kod, choć nie do końca pewny czy to jest wątek bezpieczny, czy nie?AtomicInteger do generowania ograniczonej sekwencji
public int getNextValue()
{
int v;
do
{
v = val.get();
if (v == 60)
{
val.set(1);
}
}
while (!val.compareAndSet(v , v + 1));
return v + 1;
}
+1. To naprawdę pomocne – satish
Jeśli znajdziesz naprawdę pomocną odpowiedź, kliknij znak, aby ją zaakceptować. – naiad
Co za dziwna implementacja. Zasadniczo mówi "dodaj 1, jeśli jeszcze się nie zmieniło, w przeciwnym razie próbuj dalej". Czy teoretycznie nie może to doprowadzić do nieskończonej pętli? –