Я хочу запустить другой файл jar и получить его потоки, поэтому я подумал, что запуск jar таким образом запустит jar на текущей JVM:
Process p = Runtime.getRuntime().exec("java -jar " + path);
И затем, чтобы получить потоки, как это:
ThreadGroup rootThreadGroup = null;
ThreadGroup getRootThreadGroup( ) {
if ( rootThreadGroup != null )
return rootThreadGroup;
ThreadGroup tg = Thread.currentThread( ).getThreadGroup( );
ThreadGroup ptg;
while ( (ptg = tg.getParent( )) != null )
tg = ptg;
return tg;
}
Thread[] getAllThreads( ) {
final ThreadGroup root = getRootThreadGroup( );
final ThreadMXBean thbean = ManagementFactory.getThreadMXBean( );
int nAlloc = thbean.getThreadCount( );
int n = 0;
Thread[] threads;
do {
nAlloc *= 2;
threads = new Thread[ nAlloc ];
n = root.enumerate( threads, true );
} while ( n == nAlloc );
return java.util.Arrays.copyOf( threads, n );
}
Но он не показывает новые потоки jar, которые я запускал раньше, хотя я поставил строку Thread.sleep(4000);
немного подождать.
Разве это не предполагает, что все потоки будут работать в JVM?
источник кода