This bug can be closed as the threads persisted are valid.
If we run the original test case(ie threadleaker.tar.gz), we can see the threads which persisted are two "ActiveMQ Scheduler" threads. These threads are executed using ScheduledThreadPoolExecutor with a pool size of 5. Pool size of 5 means a maximum of 5 such threads will be available in the pool and these threads will be used to execute n number of "ActiveMQ Scheduler" threads.
If connection is created and closed a lot of times, a maximum of 5 "ActiveMQ Scheduler" threads and lots of "ActiveMQ Connection worker" threads will be created.The latter thread is created to be timed out after 5 seconds of creation.
This can be verified by executing the attached test.java . This testcase prints the total number of threads in the system after a connection.start() and connection.close() is called.The total number of threads never increases to a very high number as the initial threads are getting timed out.