Sono sempre stato infastidito dal fatto che AtomicLong.compareAndSet (...) metodo in Java solo controllato per l'uguaglianza esatta.Cosa succede se hai bisogno di controllare se il valore è inferiore o superiore?Così finalmente ho appena creato il mio classi AtomicLong e AtomicInteger e ha aggiunto a GridGain utilità per essere utilizzati da noi e da tutti i nostri utenti.
Il codice è molto semplice:
01.
pubblici
classe
MyAtomicLong
estende
AtomicLong {
02.
pubblici
boolean
greaterAndSet (
lunga
controllo,
lungo
aggiornamento) {
03.
mentre la
(
vera
) {
04.
lunghe
cur = get ();
05.
06.
se
(corr controllo>) {
07.
se
(compareAndSet (corr, aggiornamento))
08.
rientro
vero
;
09.
}
10.
else
11.
restituire
false
;
12.
}
13.
}
14.
15.
pubblici
boolean
greaterEqualsAndSet (
lunga
controllo,
lungo
aggiornamento) {
16.
mentre la
(
vera
) {
17.
lunghe
cur = get ();
18.
19.
se
(controllo> = corr) {
20.
se
(compareAndSet (corr, aggiornamento))
21.
rientro
vero
;
22.
}
23.
else
24.
restituire
false
;
25.
}
26.
}
27.
28.
pubblici
boolean
lessAndSet (
lunga
controllo,
lungo
aggiornamento) {
29.
mentre la
(
vera
) {
. 30
lungo
cur = get ();
31.
32.
se
(check corr <) {
33.
se
(compareAndSet (corr, aggiornamento))
34.
rientro
vero
;
35.
}
36.
else
37.
restituire
false
;
38.
}
39.
}
40.
41.
pubblici
boolean
lessEqualsAndSet (
lunga
controllo,
lungo
aggiornamento) {
42.
mentre la
(
vera
) {
43.
lunghe
cur = get ();
44.
45.
se
(controllo <= corr) {
46.
se
(compareAndSet (corr, aggiornamento))
47.
rientro
vero
;
48.
}
49.
else
50.
restituire
false
;
51.
}
52.
}
53.
}
Sulla base delle osservazioni che ho ricevuto, ho anche aggiunto predicato a base di 'metodo (...)' checkAndSet:
01.
pubblici
boolean
checkAndSet (GridPredicate p,
lungo
aggiornamento) {
02.
mentre la
(
vera
) {
03.
lunghe
cur = get ();
04.
05.
se
(p.apply (corr)) {
06.
se
(compareAndSet (corr, aggiornamento))
07.
rientro
vero
;
08.
}
09.
else
10.
restituire
false
;
11.
}
12.
}
Naturalmente in GridGain queste classi sono nominati GridAtomicInteger e GridAtomicLong, dal momento che il prefisso tutte le nostre classi con la Griglia parola.
Corso Java - Corsi Java - Corsi programmazione Java
Nessun commento:
Posta un commento
Nota. Solo i membri di questo blog possono postare un commento.