samples/deadlock/src/org/apidesign/deadlock/SynchronizedFields.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 09:54:28 +0200
changeset 103 e492694451f6
permissions -rw-r--r--
Deadlocks on this and internal lock explained
     1 package org.apidesign.deadlock;
     2 
     3 public final class SynchronizedFields {
     4     // BEGIN: deadlock.holdsLock
     5     private int counter;
     6     
     7     private int getCounter() {
     8         assert Thread.holdsLock(this);
     9         return counter;
    10     } 
    11     
    12     private void setCounter(int c) {
    13         assert Thread.holdsLock(this);
    14         counter = c;
    15     }
    16     // END: deadlock.holdsLock
    17     
    18     
    19     public synchronized void increment() {
    20         setCounter(getCounter() + 1);
    21     }
    22     
    23     public void unsafeDecrement() {
    24         setCounter(getCounter() - 1);
    25     }
    26 }