Implement a bounded blocking queue for multiple producers/consumers (Databricks has a dedicated concurrency round).
put() blocks when full; take() blocks when empty; no busy-wait
Correctness over cleverness — a simple, reasoned synchronized solution beats a fragile lock-free one. Discuss condition variables and spurious wakeups.