81 lines
1.3 KiB
Java
81 lines
1.3 KiB
Java
// Test JVMTI GetAllThreads
|
|
|
|
import java.util.ArrayList;
|
|
|
|
public class getallthreads extends Thread
|
|
{
|
|
public static int thread_num;
|
|
public static ArrayList threads;
|
|
|
|
public int ex_frames;
|
|
public boolean done = false;
|
|
|
|
public static native void do_getallthreads_tests ();
|
|
|
|
public void run ()
|
|
{
|
|
ex_frames = thread_num;
|
|
thread_num++;
|
|
|
|
if (ex_frames > 0)
|
|
{
|
|
if ((ex_frames % 2) == 0)
|
|
placeholder ();
|
|
else
|
|
natPlaceholder ();
|
|
}
|
|
else
|
|
runner ();
|
|
}
|
|
|
|
public native void natPlaceholder ();
|
|
public native void natRunner ();
|
|
|
|
public void placeholder ()
|
|
{
|
|
ex_frames--;
|
|
|
|
if (ex_frames > 0)
|
|
{
|
|
if ((thread_num % 2) == 0)
|
|
placeholder ();
|
|
else
|
|
natPlaceholder ();
|
|
}
|
|
else
|
|
runner ();
|
|
}
|
|
|
|
public void runner ()
|
|
{
|
|
done = true;
|
|
while (done)
|
|
yield ();
|
|
}
|
|
|
|
public static void main (String[] args)
|
|
{
|
|
System.out.println ("JVMTI GetAllThreads tests");
|
|
threads = new ArrayList (20);
|
|
|
|
getallthreads t;
|
|
|
|
for (int i = 0; i < 20; i++)
|
|
{
|
|
t = new getallthreads ();
|
|
threads.add (t);
|
|
t.start ();
|
|
while (!t.done)
|
|
yield ();
|
|
}
|
|
|
|
do_getallthreads_tests ();
|
|
|
|
for (int i = 0; i < 20; i++)
|
|
{
|
|
t = (getallthreads) threads.get(i);
|
|
t.done = false;
|
|
}
|
|
}
|
|
}
|