This code creates and starts a thread:
new Thread() {
@Override
public void run() {
try { player.play(); }
catch ( Exception e ) { Sy
My preferred method would be putting a synchronized keyword on the play method
synchronized play()
synchronized methods will lock the function so only one thread will be allowed to execute them at a time.
Here's some more info https://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html
you could create a static data member for the class(where threading takes place) which is incremented each time an object of that class is called,read that and u get the number of threads started
You can create an ExecutorService
that only allows a single thread with the Executors.newSingleThreadExecutor method. Once you get the single thread executor, you can call execute
with a Runnable
parameter:
Executor executor = Executors.newSingleThreadExecutor();
executor.execute(new Runnable() { public void run() { /* do something */ } });