public synchronized Object dequeue (long timeout) throws InterruptedException, Closed { if (timeout == 0) return dequeue (); consumers++; long maxTime = System.currentTimeMillis() + timeout; try { while (queue.size() == 0 && System.currentTimeMillis() < maxTime) { wait (timeout); if (closed) throw new Closed(); } } finally { consumers--; } return queue.size() > 0 ? queue.removeFirst() : null; } public synchronized void close() {
Logger.log(new LogEvent(ThreadPool.this, e.getMessage()));
public ISOMsg receive() throws IOException, ISOException { if (!isConnected()) throw new ISOException ("unconnected ISOChannel"); try { ISOMsg m = (ISOMsg) ((ISOMsg) queue.dequeue()).clone(); LogEvent evt = new LogEvent (this, "loopback-receive", m); m = applyIncomingFilters (m, evt); cnt[RX]++; notifyObservers(); Logger.log (evt); return m; } catch (InterruptedException e) { throw new IOException (e.toString()); } catch (BlockingQueue.Closed e) { throw new IOException (e.toString()); } }
public synchronized Object dequeue() throws InterruptedException, Closed { consumers++; try { while (queue.size() == 0) { wait(); if (closed) throw new Closed(); } } finally { consumers--; } return queue.removeFirst(); }
public synchronized void execute(Runnable action) throws Closed { if (!pool.ready()) throw new Closed(); if (++jobs % this.maxPoolSize == 0 || pool.consumerCount() <= 0) supervise(); if (running < maxPoolSize && pool.consumerDeficit() >= 0) { new PooledThread().start(); running++; } available--; pool.enqueue (action); } public void dump (PrintStream p, String indent) {
@Test public void testClosedConstructor() throws Throwable { BlockingQueue.Closed closed = new BlockingQueue.Closed(); assertEquals("closed.getMessage()", "queue-closed", closed.getMessage()); }
public synchronized void requeue (Object o) throws Closed { if (closed) throw new Closed(); queue.addFirst (o); notify(); }
public synchronized void enqueue (Object o) throws Closed { if (closed) throw new Closed(); queue.addLast (o); notify(); } public synchronized void requeue (Object o) throws Closed {
@Test public void testRequeueThrowsClosed() throws Throwable { BlockingQueue blockingQueue = new BlockingQueue(); blockingQueue.close(); try { blockingQueue.requeue(""); fail("Expected Closed to be thrown"); } catch (BlockingQueue.Closed ex) { assertEquals("ex.getMessage()", "queue-closed", ex.getMessage()); assertEquals("blockingQueue.getQueue().size()", 0, blockingQueue.getQueue().size()); } }
@Test public void testEnqueueThrowsClosed() throws Throwable { BlockingQueue blockingQueue = new BlockingQueue(); blockingQueue.close(); try { blockingQueue.enqueue(Integer.valueOf(-32)); fail("Expected Closed to be thrown"); } catch (BlockingQueue.Closed ex) { assertEquals("ex.getMessage()", "queue-closed", ex.getMessage()); assertEquals("blockingQueue.getQueue().size()", 0, blockingQueue.getQueue().size()); } }