put() blocks when full

Bounded queue + fast producer + slow consumer → producer waits. Natural backpressure. This is a feature.

Advertisement

put() blocks when full

Bounded queue + fast producer + slow consumer → producer waits. Natural backpressure. This is a feature.

Advertisement

take() blocks when empty

Consumer waits for work. No spinning. CPU-efficient.

ArrayBlockingQueue vs LinkedBlockingQueue

Array = bounded, memory upfront, faster. Linked = optionally unbounded (danger!), slightly slower.

Never use unbounded

Unbounded queue + faster producer → OOM. Always bound. Choose capacity based on memory + latency requirements.

Poison pill for shutdown

Signal 'no more work' by putting a sentinel value. Consumers see it, exit. Cleaner than interrupt.