Mercurial > hg > blitz_condensed
view src/org/dancres/blitz/notify/BlockingDispatchImpl.java @ 22:b7e52953b7a6
Add some cache/memory statistics to help spot potential exhaustion and other tuning issues.
author | Dan Creswell <dan.creswell@gmail.com> |
---|---|
date | Fri, 28 Aug 2009 17:23:33 +0100 |
parents | 3dc0c5604566 |
children |
line wrap: on
line source
package org.dancres.blitz.notify; class BlockingDispatchImpl implements DispatchTask { private EventQueue theQueue; private QueueEvent theEvent; private boolean isDone = false; private boolean isResolvable = false; private int myTotalDispatches = 0; private int myCompletedDispatches = 0; BlockingDispatchImpl(EventQueue aQueue, QueueEvent anEvent) { theQueue = aQueue; theEvent = anEvent; } public void run() { theQueue.dispatchImpl(this); } public QueueEvent getEvent() { return theEvent; } public void block() throws InterruptedException { synchronized(this) { while (! isDone) { try { wait(); } catch (InterruptedException anIE) { } } } } public void newDispatch() { synchronized(this) { ++myTotalDispatches; } } public void dispatched() { synchronized(this) { ++myCompletedDispatches; } checkAndFire(); } public void enableResolve() { synchronized(this) { isResolvable = true; } checkAndFire(); } private void checkAndFire() { synchronized(this) { if (!isResolvable) return; if (myTotalDispatches == myCompletedDispatches) { isDone = true; notify(); } } } }