001package com.hammurapi.common.concurrent;
002
003/**
004 * Synchronization interface.
005 * @author Pavel Vlasov
006 *
007 */
008public interface AsynchronousProcessor {
009
010        /**
011         * Semantics of this method is similar to Thread.join() - this
012         * method blocks if the processor is working active tasks and
013         * unblocks when all work is done. 
014         * @throws InterruptedException
015         */
016        void join() throws InterruptedException;
017        
018        /**
019         * Waits for the processor to finish work for specified time.
020         * @param timeout
021         * @return true if all work was finished.
022         * @throws InterruptedException
023         */
024        boolean join(long timeout) throws InterruptedException;
025}