Lock l = new Lock(); l.lock(); // Call the lock before calling try. try { // Do some processing. // All code must go in here including break, return etc. return something; } finally { l.unlock(); }
import java.util.concurrent.locks.Lock; public void init() { Lock arbitrator = new Lock(); } public void meth1() { arbitrator.lock(); synchronized (obj1) { synchronized (obj2) { arbitrator.unlock(); // Do Stuff } } } public void meth2() { arbitrator.lock(); synchronized (obj2) { synchronized (obj1) { arbitrator.unlock(); // Do Stuff } } }
Lock lock = new Lock(...); lock.lock(); try { // your business logic } finally { lock.unlock(); }
public class LocKTest { @Test public void testLock() { Lock lock = new Lock(); while (true) { if (lock.lock()) { System.out.println("has been locked"); // prints only once } } } }
final Lock lock = new Lock(); lock.lock(); expectLastCall().andAnswer(new IAnswer<Void>() { @Override public Void answer() throws Throwable { lock.unlock(); throw new RuntimeException("TEST EXCEPTION"); } }); doStuff(); lock.lock(); verify(mock);
Lock myLock= new Lock(); myLock.lock(); set.add(item); myLock.unlock(); myLock.lock(); ...while loop and modification.. myLock.unlock();
private final Lock lock = new Lock(); public void process() { boolean locked = false; if (isProduct()) { // Depends on the current thread lock.lock(); locked = true; } try { // Do the work here } finally { if (locked) { lock.unlock(); } } }
public class SomeClass { private Lock lock = new Lock(); private volatile Object resource; public void handleDrawRequest(Canvas canvas) { if( resource==null ) { if( lock.tryLock() ) { try { if( resource==null ) resource = loadResource(); } finally { lock.unlock(); } } else { return; } } drawResourceOn(canvas); } }
Lock lock = new Lock(); new Thread(new Runnable(){ //... synchronized(lock){ do unsynchonized function on list } //... }).start(); new Thread(new Runnable(){ //... synchronized(lock){ do unsynchonized function on list } //... }).start();
public class Packet { private final Lock lock = new Lock(); private final byte[] data = new byte[1024]; public void setData(int index, byte data) { lock.waitUntilUnlock(); this.data[index] = data; } public byte getData(int index) { return data[index]; } public void sendPacket(final ClientConnection clientConnection) { lock.lock(); new Thread(new Runnable() { // I use an ExecutorService @Override public void run() { thisTakesMuchTime(data); clientConnection.sendPacket(data); lock.unlock(); } }).start(); } }
protected Lock ourLock = new Lock();
Lock mylock = new Lock(); Thread t1 = new Thread() { public void run() {
private static final Lock lock = new ReentalLock();
Lock lock = new Lock(); Worker worker1 = new Worker(lock, "worker1", 15000); Worker worker2 = new Worker(lock, "worker2", 10000);