Java Code Examples for java.util.concurrent.ArrayBlockingQueue#put()

The following examples show how to use java.util.concurrent.ArrayBlockingQueue#put() . These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
/**
 * drainTo empties full queue, unblocking a waiting put.
 */
public void testDrainToWithActivePut() throws InterruptedException {
    final ArrayBlockingQueue q = populatedQueue(SIZE);
    Thread t = new Thread(new CheckedRunnable() {
        public void realRun() throws InterruptedException {
            q.put(new Integer(SIZE + 1));
        }});

    t.start();
    ArrayList l = new ArrayList();
    q.drainTo(l);
    assertTrue(l.size() >= SIZE);
    for (int i = 0; i < SIZE; ++i)
        assertEquals(l.get(i), new Integer(i));
    t.join();
    assertTrue(q.size() + l.size() >= SIZE);
}
 
Example 2
Source Project: lucene-solr   File: ExecutorStream.java    License: Apache License 2.0 6 votes vote down vote up
public Tuple read() throws IOException {
  @SuppressWarnings({"unchecked", "rawtypes"})
  ArrayBlockingQueue<Tuple> queue = new ArrayBlockingQueue(10000);
  while(true) {
    Tuple tuple = stream.read();
    if (!tuple.EOF) {
      try {
        queue.put(tuple);
      } catch (InterruptedException e) {
        throw new IOException(e);
      }
      executorService.execute(new StreamTask(queue, streamFactory, streamContext));
    } else {
      return tuple;
    }
  }
}
 
Example 3
Source Project: migration-tool   File: AbstractClient.java    License: Apache License 2.0 6 votes vote down vote up
/**
 * receive response
 */
public void putResponse(String message) throws Exception {
	String[] request = StringUtils.split(message, "|");
	if (request.length < 2) {
		throw new Exception("参数错误!切分的长度必须大于1" + message);
	}
	int requestId = Integer.parseInt(request[0]);
	if (!responses.containsKey(requestId)) {
		log.warn("give up the response,request id is:" + requestId + ",maybe because timeout!");
		return;
	}
	try {
		ArrayBlockingQueue<String[]> queue = responses.get(requestId);
		if (queue != null) {
			queue.put(request);
		} else {
			log.warn("give up the response,request id is:" + requestId + ",because queue is null");
		}
	} catch (InterruptedException e) {
		log.error("put response error,request id is:" + requestId, e);
	}
}
 
Example 4
Source Project: j2objc   File: ArrayBlockingQueueTest.java    License: Apache License 2.0 6 votes vote down vote up
/**
 * drainTo empties full queue, unblocking a waiting put.
 */
public void testDrainToWithActivePut() throws InterruptedException {
    final ArrayBlockingQueue q = populatedQueue(SIZE);
    Thread t = new Thread(new CheckedRunnable() {
        public void realRun() throws InterruptedException {
            q.put(new Integer(SIZE + 1));
        }});

    t.start();
    ArrayList l = new ArrayList();
    q.drainTo(l);
    assertTrue(l.size() >= SIZE);
    for (int i = 0; i < SIZE; ++i)
        assertEquals(l.get(i), new Integer(i));
    t.join();
    assertTrue(q.size() + l.size() >= SIZE);
}
 
Example 5
public static void main(String[] args)  {
    ArrayBlockingQueue<Integer> queue = new ArrayBlockingQueue<>(3);

    try {
        queue.put(1);
        queue.put(2);
        queue.put(3);
       // queue.put(4);  // 如果不注释,将会一直阻塞当前线程(main),除非有容量空出。
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println("queue contains " + queue);
}
 
Example 6
/**
 * all elements successfully put are contained
 */
public void testPut() throws InterruptedException {
    ArrayBlockingQueue q = new ArrayBlockingQueue(SIZE);
    for (int i = 0; i < SIZE; ++i) {
        Integer x = new Integer(i);
        q.put(x);
        assertTrue(q.contains(x));
    }
    assertEquals(0, q.remainingCapacity());
}
 
Example 7
Source Project: j2objc   File: ArrayBlockingQueueTest.java    License: Apache License 2.0 5 votes vote down vote up
/**
 * all elements successfully put are contained
 */
public void testPut() throws InterruptedException {
    ArrayBlockingQueue q = new ArrayBlockingQueue(SIZE);
    for (int i = 0; i < SIZE; ++i) {
        Integer x = new Integer(i);
        q.put(x);
        assertTrue(q.contains(x));
    }
    assertEquals(0, q.remainingCapacity());
}
 
Example 8
Source Project: buck   File: WorkerProcessPoolTest.java    License: Apache License 2.0 5 votes vote down vote up
@Test(timeout = WAIT_FOR_TEST_THREADS_TIMEOUT)
public void canStartupMultipleWorkersInParallel() throws InterruptedException, IOException {
  ArrayBlockingQueue<Future<WorkerProcess>> workers = new ArrayBlockingQueue<>(1);
  WorkerProcessPool pool = createPool(2, workers);

  // thread 1, attempting to borrow a worker
  testThreads.startThread(borrowWorkerProcessWithoutReturning(pool, concurrentSet()));

  // transfer an incomplete future to thread 1. Thread 1 is blocked on @{link Future#get}.
  workers.put(new CompletableFuture<>());

  // transfer a completable future to thread 2
  // .put will block until thread 1 takes the un-completable future added first
  FakeWorkerProcess createdWorker = new FakeWorkerProcess(ImmutableMap.of());
  Future<WorkerProcess> worker = CompletableFuture.completedFuture(createdWorker);
  workers.put(worker);

  // thread 2, attempting to borrow a worker
  Set<WorkerProcess> createdWorkers = concurrentSet();
  Thread secondThread =
      testThreads.startThread(borrowWorkerProcessWithoutReturning(pool, createdWorkers));

  // wait until thread 2 ends
  secondThread.join();

  // here, the second thread has finished running, and has thus added the worker it borrowed to
  // `createdWorkers`.
  assertThat(createdWorkers, equalTo(ImmutableSet.of(createdWorker)));
}