diff -r 000000000000 -r e492694451f6 samples/deadlock/src/org/apidesign/deadlock/SynchronizedFieldsInternally.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/deadlock/src/org/apidesign/deadlock/SynchronizedFieldsInternally.java Sat Jun 14 09:54:28 2008 +0200 @@ -0,0 +1,29 @@ +package org.apidesign.deadlock; + +public final class SynchronizedFieldsInternally { + // BEGIN: deadlock.ownLock + private final Object LOCK = new Object(); + private int counter; + + private int getCounter() { + assert Thread.holdsLock(LOCK); + return counter; + } + + private void setCounter(int c) { + assert Thread.holdsLock(LOCK); + counter = c; + } + // END: deadlock.ownLock + + + public void increment() { + synchronized (LOCK) { + setCounter(getCounter() + 1); + } + } + + public void unsafeDecrement() { + setCounter(getCounter() - 1); + } +}