Locking Objects

LockManager.java
01/* Copyright (C) 2004 - 2006 db4objects Inc. http://www.db4o.com */ 02 03package com.db4odoc.f1.semaphores; 04 05import com.db4o.*; 06import com.db4o.ext.*; 07 08/** 09 * This class demonstrates a very rudimentary implementation 10 * of virtual "locks" on objects with db4o. All code that is 11 * intended to obey these locks will have to call lock() and 12 * unlock(). 13 */ 14public class LockManager { 15 16 private final String SEMAPHORE_NAME = "locked: "; 17 private final int WAIT_FOR_AVAILABILITY = 300; // 300 milliseconds 18 19 private final ExtObjectContainer _objectContainer; 20 21 public LockManager(ObjectContainer objectContainer){ 22 _objectContainer = objectContainer.ext(); 23 } 24 25 public boolean lock(Object obj){ 26 long id = _objectContainer.getID(obj); 27 return _objectContainer.setSemaphore(SEMAPHORE_NAME + id, WAIT_FOR_AVAILABILITY); 28 } 29 30 public void unlock(Object obj){ 31 long id = _objectContainer.getID(obj); 32 _objectContainer.releaseSemaphore(SEMAPHORE_NAME + id); 33 } 34}