Senior
What queues do you know for multithreading in Java?
sobes.tech AI
Answer from AI
In Java, various types of queues from the java.util.concurrent package are often used for multithreading:
- ConcurrentLinkedQueue — a non-blocking linked list-based queue suitable for multithreaded access without locks.
- LinkedBlockingQueue — a blocking queue with an optional capacity limit, often used to implement thread pools.
- ArrayBlockingQueue — a blocking queue with a fixed size based on an array, providing strict FIFO order.
- PriorityBlockingQueue — a priority queue with blocking capabilities, useful for processing tasks based on priority.
- SynchronousQueue — a queue without internal capacity, where each put must wait for a take, used for direct data transfer between threads.
Example of using LinkedBlockingQueue:
import java.util.concurrent.*;
BlockingQueue<String> queue = new LinkedBlockingQueue<>();
// Producer
new Thread(() -> {
try {
queue.put("Task");
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}).start();
// Consumer
new Thread(() -> {
try {
String task = queue.take();
System.out.println("Processing: " + task);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}).start();
These queues help safely exchange data between threads and manage load.