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.