64 |
|
* get returns the last value set or assigned |
65 |
|
*/ |
66 |
|
public void testGetSet() { |
67 |
< |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
67 |
> |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
68 |
> |
try { |
69 |
> |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
70 |
> |
} catch (RuntimeException ok) { |
71 |
> |
return; |
72 |
> |
} |
73 |
|
x = 1; |
74 |
|
assertEquals(1,a.get(this)); |
75 |
|
a.set(this,2); |
82 |
|
* compareAndSet succeeds in changing value if equal to expected else fails |
83 |
|
*/ |
84 |
|
public void testCompareAndSet() { |
85 |
< |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
85 |
> |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
86 |
> |
try { |
87 |
> |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
88 |
> |
} catch (RuntimeException ok) { |
89 |
> |
return; |
90 |
> |
} |
91 |
|
x = 1; |
92 |
|
assertTrue(a.compareAndSet(this,1,2)); |
93 |
|
assertTrue(a.compareAndSet(this,2,-4)); |
105 |
|
*/ |
106 |
|
public void testCompareAndSetInMultipleThreads() { |
107 |
|
x = 1; |
108 |
< |
final AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest>a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
108 |
> |
final AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest>a; |
109 |
> |
try { |
110 |
> |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
111 |
> |
} catch (RuntimeException ok) { |
112 |
> |
return; |
113 |
> |
} |
114 |
|
|
115 |
|
Thread t = new Thread(new Runnable() { |
116 |
|
public void run() { |
133 |
|
* to expected |
134 |
|
*/ |
135 |
|
public void testWeakCompareAndSet() { |
136 |
< |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
136 |
> |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
137 |
> |
try { |
138 |
> |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
139 |
> |
} catch (RuntimeException ok) { |
140 |
> |
return; |
141 |
> |
} |
142 |
|
x = 1; |
143 |
|
while(!a.weakCompareAndSet(this,1,2)); |
144 |
|
while(!a.weakCompareAndSet(this,2,-4)); |
151 |
|
* getAndSet returns previous value and sets to given value |
152 |
|
*/ |
153 |
|
public void testGetAndSet() { |
154 |
< |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
154 |
> |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
155 |
> |
try { |
156 |
> |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
157 |
> |
} catch (RuntimeException ok) { |
158 |
> |
return; |
159 |
> |
} |
160 |
|
x = 1; |
161 |
|
assertEquals(1,a.getAndSet(this, 0)); |
162 |
|
assertEquals(0,a.getAndSet(this,-10)); |
167 |
|
* getAndAdd returns previous value and adds given value |
168 |
|
*/ |
169 |
|
public void testGetAndAdd() { |
170 |
< |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
170 |
> |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
171 |
> |
try { |
172 |
> |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
173 |
> |
} catch (RuntimeException ok) { |
174 |
> |
return; |
175 |
> |
} |
176 |
|
x = 1; |
177 |
|
assertEquals(1,a.getAndAdd(this,2)); |
178 |
|
assertEquals(3,a.get(this)); |
184 |
|
* getAndDecrement returns previous value and decrements |
185 |
|
*/ |
186 |
|
public void testGetAndDecrement() { |
187 |
< |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
187 |
> |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
188 |
> |
try { |
189 |
> |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
190 |
> |
} catch (RuntimeException ok) { |
191 |
> |
return; |
192 |
> |
} |
193 |
|
x = 1; |
194 |
|
assertEquals(1,a.getAndDecrement(this)); |
195 |
|
assertEquals(0,a.getAndDecrement(this)); |
200 |
|
* getAndIncrement returns previous value and increments |
201 |
|
*/ |
202 |
|
public void testGetAndIncrement() { |
203 |
< |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
203 |
> |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
204 |
> |
try { |
205 |
> |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
206 |
> |
} catch (RuntimeException ok) { |
207 |
> |
return; |
208 |
> |
} |
209 |
|
x = 1; |
210 |
|
assertEquals(1,a.getAndIncrement(this)); |
211 |
|
assertEquals(2,a.get(this)); |
220 |
|
* addAndGet adds given value to current, and returns current value |
221 |
|
*/ |
222 |
|
public void testAddAndGet() { |
223 |
< |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
223 |
> |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
224 |
> |
try { |
225 |
> |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
226 |
> |
} catch (RuntimeException ok) { |
227 |
> |
return; |
228 |
> |
} |
229 |
|
x = 1; |
230 |
|
assertEquals(3,a.addAndGet(this,2)); |
231 |
|
assertEquals(3,a.get(this)); |
237 |
|
* decrementAndGet decrements and returns current value |
238 |
|
*/ |
239 |
|
public void testDecrementAndGet() { |
240 |
< |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
240 |
> |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
241 |
> |
try { |
242 |
> |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
243 |
> |
} catch (RuntimeException ok) { |
244 |
> |
return; |
245 |
> |
} |
246 |
|
x = 1; |
247 |
|
assertEquals(0,a.decrementAndGet(this)); |
248 |
|
assertEquals(-1,a.decrementAndGet(this)); |
254 |
|
* incrementAndGet increments and returns current value |
255 |
|
*/ |
256 |
|
public void testIncrementAndGet() { |
257 |
< |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
257 |
> |
AtomicIntegerFieldUpdater<AtomicIntegerFieldUpdaterTest> a; |
258 |
> |
try { |
259 |
> |
a = AtomicIntegerFieldUpdater.newUpdater(AtomicIntegerFieldUpdaterTest.class, "x"); |
260 |
> |
} catch (RuntimeException ok) { |
261 |
> |
return; |
262 |
> |
} |
263 |
|
x = 1; |
264 |
|
assertEquals(2,a.incrementAndGet(this)); |
265 |
|
assertEquals(2,a.get(this)); |