Java's ArrayBlockingQueue's take()
method blocks, and sits and waits until something is put into the queue.
Another method would be to have the thread call poll()
in a loop until it doesn't return null
.
Why does the take()
method not cause a CPU spike to happen but the poll()
method does? I understand why the poll version spikes the CPU, but what is happening under the hood with the take() method that doesn't cause the CPU to spike?