martedì 21 giugno 2011

Meglio AtomicLong e AtomicInteger in Java

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 ) {
. 30lungo 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

Corso programmazione Android - Certificazione Android

Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.