Close

Java Collections - ArrayBlockingQueue.put() Examples

Java Collections Java Java API 


Class:

java.util.concurrent.ArrayBlockingQueue

java.lang.Objectjava.lang.Objectjava.util.AbstractCollectionjava.util.AbstractCollectionjava.util.CollectionCollectionjava.util.AbstractQueuejava.util.AbstractQueuejava.util.QueueQueuejava.util.concurrent.ArrayBlockingQueuejava.util.concurrent.ArrayBlockingQueuejava.util.concurrent.BlockingQueueBlockingQueuejava.io.SerializableSerializableLogicBig

Method:

public void put(E e)
         throws InterruptedException

Inserts the specified element at the tail of this queue, waiting for space to become available if the queue is full.


Examples


package com.logicbig.example.arrayblockingqueue;

import java.util.Arrays;
import java.util.concurrent.ArrayBlockingQueue;

public class PutExample {

public static void main(String... args) throws InterruptedException {
ArrayBlockingQueue<Integer> q = new ArrayBlockingQueue<>(2);
new Thread(()->{
for (int i = 1; i <= 5 ; i++) {
print("putting: "+i, "remaining Capacity: "+q.remainingCapacity());
try {
q.put(i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
Thread.sleep(1000);
take(q);
take(q);
take(q);
take(q);
take(q);

}

private static void print(String... s) {
System.out.printf("%s (Thread: %s)%n", Arrays.toString(s), Thread.currentThread().getName());
}

private static void take(ArrayBlockingQueue<Integer> q) throws InterruptedException {
System.out.println("---");
print("taking");
Integer i = q.take();
print("taken: "+i);
}
}

Output

[putting: 1, remaining Capacity: 2] (Thread: Thread-0)
[putting: 2, remaining Capacity: 1] (Thread: Thread-0)
[putting: 3, remaining Capacity: 0] (Thread: Thread-0)
---
[taking] (Thread: com.logicbig.example.arrayblockingqueue.PutExample.main())
[putting: 4, remaining Capacity: 0] (Thread: Thread-0)
[taken: 1] (Thread: com.logicbig.example.arrayblockingqueue.PutExample.main())
---
[taking] (Thread: com.logicbig.example.arrayblockingqueue.PutExample.main())
[taken: 2] (Thread: com.logicbig.example.arrayblockingqueue.PutExample.main())
---
[taking] (Thread: com.logicbig.example.arrayblockingqueue.PutExample.main())
[putting: 5, remaining Capacity: 0] (Thread: Thread-0)
[taken: 3] (Thread: com.logicbig.example.arrayblockingqueue.PutExample.main())
---
[taking] (Thread: com.logicbig.example.arrayblockingqueue.PutExample.main())
[taken: 4] (Thread: com.logicbig.example.arrayblockingqueue.PutExample.main())
---
[taking] (Thread: com.logicbig.example.arrayblockingqueue.PutExample.main())
[taken: 5] (Thread: com.logicbig.example.arrayblockingqueue.PutExample.main())




See Also