1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Written by Doug Lea with assistance from members of JCP JSR-166 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Expert Group and released to the public domain, as explained at 4a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson * http://creativecommons.org/publicdomain/zero/1.0/ 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.util.concurrent.atomic; 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport sun.misc.Unsafe; 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 11bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * An {@code int} value that may be updated atomically. See the 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link java.util.concurrent.atomic} package specification for 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * description of the properties of atomic variables. An 14bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * {@code AtomicInteger} is used in applications such as atomically 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * incremented counters, and cannot be used as a replacement for an 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link java.lang.Integer}. However, this class does extend 17bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * {@code Number} to allow uniform access by tools and utilities that 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * deal with numerically-based classes. 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @since 1.5 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @author Doug Lea 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project*/ 23bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilsonpublic class AtomicInteger extends Number implements java.io.Serializable { 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final long serialVersionUID = 6214790243416807050L; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // setup to use Unsafe.compareAndSwapInt for updates 27a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson private static final Unsafe unsafe = Unsafe.getUnsafe(); 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final long valueOffset; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static { 31a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson try { 32a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson valueOffset = unsafe.objectFieldOffset 33a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson (AtomicInteger.class.getDeclaredField("value")); 34a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson } catch (Exception ex) { throw new Error(ex); } 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private volatile int value; 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 40bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * Creates a new AtomicInteger with the given initial value. 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param initialValue the initial value 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public AtomicInteger(int initialValue) { 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value = initialValue; 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 49bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * Creates a new AtomicInteger with initial value {@code 0}. 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public AtomicInteger() { 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 55bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * Gets the current value. 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the current value 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final int get() { 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return value; 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 62bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 64bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * Sets to the given value. 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param newValue the new value 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final void set(int newValue) { 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value = newValue; 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 736232a5efed0ea103e35aec73206e5e03a8b82e0cJesse Wilson * Eventually sets to the given value. 746232a5efed0ea103e35aec73206e5e03a8b82e0cJesse Wilson * 756232a5efed0ea103e35aec73206e5e03a8b82e0cJesse Wilson * @param newValue the new value 766232a5efed0ea103e35aec73206e5e03a8b82e0cJesse Wilson * @since 1.6 776232a5efed0ea103e35aec73206e5e03a8b82e0cJesse Wilson */ 786232a5efed0ea103e35aec73206e5e03a8b82e0cJesse Wilson public final void lazySet(int newValue) { 796232a5efed0ea103e35aec73206e5e03a8b82e0cJesse Wilson unsafe.putOrderedInt(this, valueOffset, newValue); 806232a5efed0ea103e35aec73206e5e03a8b82e0cJesse Wilson } 816232a5efed0ea103e35aec73206e5e03a8b82e0cJesse Wilson 826232a5efed0ea103e35aec73206e5e03a8b82e0cJesse Wilson /** 83bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * Atomically sets to the given value and returns the old value. 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param newValue the new value 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the previous value 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final int getAndSet(int newValue) { 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (;;) { 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int current = get(); 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (compareAndSet(current, newValue)) 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return current; 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 95bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 97bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * Atomically sets the value to the given updated value 98bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * if the current value {@code ==} the expected value. 99bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param expect the expected value 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param update the new value 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return true if successful. False return indicates that 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the actual value was not equal to the expected value. 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final boolean compareAndSet(int expect, int update) { 106bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson return unsafe.compareAndSwapInt(this, valueOffset, expect, update); 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 110bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * Atomically sets the value to the given updated value 111bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * if the current value {@code ==} the expected value. 112bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * 113bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * <p>May <a href="package-summary.html#Spurious">fail spuriously</a> 114bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * and does not provide ordering guarantees, so is only rarely an 115bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * appropriate alternative to {@code compareAndSet}. 116bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param expect the expected value 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param update the new value 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return true if successful. 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final boolean weakCompareAndSet(int expect, int update) { 122bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson return unsafe.compareAndSwapInt(this, valueOffset, expect, update); 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 126bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * Atomically increments by one the current value. 127bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the previous value 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final int getAndIncrement() { 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (;;) { 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int current = get(); 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int next = current + 1; 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (compareAndSet(current, next)) 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return current; 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 138bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 140bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * Atomically decrements by one the current value. 141bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the previous value 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final int getAndDecrement() { 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (;;) { 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int current = get(); 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int next = current - 1; 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (compareAndSet(current, next)) 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return current; 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 152bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 154bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * Atomically adds the given value to the current value. 155bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param delta the value to add 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the previous value 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final int getAndAdd(int delta) { 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (;;) { 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int current = get(); 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int next = current + delta; 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (compareAndSet(current, next)) 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return current; 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 169bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * Atomically increments by one the current value. 170bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the updated value 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final int incrementAndGet() { 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (;;) { 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int current = get(); 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int next = current + 1; 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (compareAndSet(current, next)) 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return next; 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 181bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 183bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * Atomically decrements by one the current value. 184bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the updated value 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final int decrementAndGet() { 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (;;) { 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int current = get(); 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int next = current - 1; 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (compareAndSet(current, next)) 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return next; 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 195bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 197bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * Atomically adds the given value to the current value. 198bba8d1acd6dfff06c94d761c67a30154ca5ca5dfJesse Wilson * 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param delta the value to add 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the updated value 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final int addAndGet(int delta) { 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (;;) { 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int current = get(); 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int next = current + delta; 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (compareAndSet(current, next)) 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return next; 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the String representation of the current value. 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the String representation of the current value. 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String toString() { 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return Integer.toString(get()); 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 220a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson /** 221a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson * Returns the value of this {@code AtomicInteger} as an {@code int}. 222a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson */ 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int intValue() { 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return get(); 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 227a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson /** 228a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson * Returns the value of this {@code AtomicInteger} as a {@code long} 229a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson * after a widening primitive conversion. 230a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson */ 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public long longValue() { 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return (long)get(); 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 235a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson /** 236a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson * Returns the value of this {@code AtomicInteger} as a {@code float} 237a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson * after a widening primitive conversion. 238a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson */ 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public float floatValue() { 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return (float)get(); 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 243a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson /** 244a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson * Returns the value of this {@code AtomicInteger} as a {@code double} 245a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson * after a widening primitive conversion. 246a807b4d808d2591894daf13aab179b2e9c46a2f5Jesse Wilson */ 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public double doubleValue() { 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return (double)get(); 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 252