jtulach@103: package org.apidesign.deadlock; jtulach@103: jtulach@103: public final class SynchronizedFieldsInternally { jtulach@103: // BEGIN: deadlock.ownLock jtulach@103: private final Object LOCK = new Object(); jtulach@103: private int counter; jtulach@103: jtulach@103: private int getCounter() { jtulach@103: assert Thread.holdsLock(LOCK); jtulach@103: return counter; jtulach@103: } jtulach@103: jtulach@103: private void setCounter(int c) { jtulach@103: assert Thread.holdsLock(LOCK); jtulach@103: counter = c; jtulach@103: } jtulach@103: // END: deadlock.ownLock jtulach@103: jtulach@103: jtulach@103: public void increment() { jtulach@103: synchronized (LOCK) { jtulach@103: setCounter(getCounter() + 1); jtulach@103: } jtulach@103: } jtulach@103: jtulach@103: public void unsafeDecrement() { jtulach@103: setCounter(getCounter() - 1); jtulach@103: } jtulach@103: }