use of java.util.concurrent.atomic.AtomicMarkableReference in project j2objc by google.
the class AtomicMarkableReferenceTest method testCompareAndSetInMultipleThreads2.
/**
* compareAndSet in one thread enables another waiting for mark value
* to succeed
*/
public void testCompareAndSetInMultipleThreads2() throws Exception {
final AtomicMarkableReference ai = new AtomicMarkableReference(one, false);
Thread t = new Thread(new CheckedRunnable() {
public void realRun() {
while (!ai.compareAndSet(one, one, true, false)) Thread.yield();
}
});
t.start();
assertTrue(ai.compareAndSet(one, one, false, true));
t.join(LONG_DELAY_MS);
assertFalse(t.isAlive());
assertSame(one, ai.getReference());
assertFalse(ai.isMarked());
}
use of java.util.concurrent.atomic.AtomicMarkableReference in project j2objc by google.
the class AtomicMarkableReferenceTest method testGetSet.
/**
* get returns the last values of reference and mark set
*/
public void testGetSet() {
boolean[] mark = new boolean[1];
AtomicMarkableReference ai = new AtomicMarkableReference(one, false);
assertSame(one, ai.getReference());
assertFalse(ai.isMarked());
assertSame(one, ai.get(mark));
assertFalse(mark[0]);
ai.set(two, false);
assertSame(two, ai.getReference());
assertFalse(ai.isMarked());
assertSame(two, ai.get(mark));
assertFalse(mark[0]);
ai.set(one, true);
assertSame(one, ai.getReference());
assertTrue(ai.isMarked());
assertSame(one, ai.get(mark));
assertTrue(mark[0]);
}
use of java.util.concurrent.atomic.AtomicMarkableReference in project j2objc by google.
the class AtomicMarkableReferenceTest method testCompareAndSet.
/**
* compareAndSet succeeds in changing values if equal to expected reference
* and mark else fails
*/
public void testCompareAndSet() {
boolean[] mark = new boolean[1];
AtomicMarkableReference ai = new AtomicMarkableReference(one, false);
assertSame(one, ai.get(mark));
assertFalse(ai.isMarked());
assertFalse(mark[0]);
assertTrue(ai.compareAndSet(one, two, false, false));
assertSame(two, ai.get(mark));
assertFalse(mark[0]);
assertTrue(ai.compareAndSet(two, m3, false, true));
assertSame(m3, ai.get(mark));
assertTrue(mark[0]);
assertFalse(ai.compareAndSet(two, m3, true, true));
assertSame(m3, ai.get(mark));
assertTrue(mark[0]);
}
Aggregations