| // 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; |
| } |
| } |
| } |