This can be reproduced consistently on WinNT under the following scenario:
- A GUI application is used. It has a button to playback a short
audio clip each time it's pressed.
- When the button is pressed, it creates a SourceDataLine to play back
a short clip of PCM data.
- At the end of the short clip, SourceDataLine.drain is called. When
that returns, the SourceDataLine is closed.
- By repeatedly hitting the button after a while, the CPU will reach
100% and stay at 100% indefinitely.
By doing a thread dump at this point, there will a few threads
that got stuck in the com.sun.media.sound.MixerSourceLine.drain call.