What exactly do you mean? Should the StreamThread add a commend queue to cleanup the source or are you suggesting a completely different way?
Yes, my thought is that all actions performed on a source should be done from the command thread, with callbacks for when various processes are complete, like shutting down, started playing, etc. This may be the only area that consistently leads to a problem, there are potentially others with the current design (I was quite new to Java when I wrote this, so things could definitely be improved). On the other hand, if it is working well, maybe not an issue.