This extension works by creating 1-2 threads for every note played, one to start the note playing and one to stop it. This can lead to literally thousands of threads being created within a second or two of each other. Instead of starting a thread for each start/stop, it would be better to have a pool of x (probably 1-2) background threads which take various start/stop operations from a DelayQueue and execute them. This would reduce the total number of threads and conceptually simplify the model this extension uses.