1 package org.oddjob.util; 2 3 import org.oddjob.OddjobException; 4 5 6 13 14 public class Lock { 15 16 private Thread lockedBy; 17 private String reason; 18 private int nests; 19 20 24 25 synchronized public void accquire(String reason) 26 throws OddjobLockedException { 27 if (lockedBy == null) { 28 lockedBy = Thread.currentThread(); 29 this.reason = reason; 30 } 31 else if (lockedBy != Thread.currentThread()) { 32 throw new OddjobLockedException(this.reason); 33 } 34 ++nests; 35 } 36 37 40 41 synchronized public void release() { 42 if (lockedBy != Thread.currentThread()) { 43 throw new OddjobException("Thread doesn't own lock."); 44 } 45 if (--nests == 0) { 46 lockedBy = null; 47 reason = null; 48 } 49 } 50 51 } 52 | Popular Tags |