Core concept

BlockingQueue q = new LinkedBlockingQueue<>(100);
q.put(task);
Task t = q.take();
Advertisement

How it works

Bounded vs unbounded. Fair vs unfair. Choose per contention.

Advertisement

Trade-offs + gotchas

Producer-consumer pipelines.