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