Hi,
I added a helper method to ThreadGroup that the VM can use to
(relativelyly) efficiently resolve a thread id into a Thread object.
Regards,
Jeroen
2006-07-01 Jeroen Frijters <[EMAIL PROTECTED]>
* java/lang/ThreadGroup.java
(getThreadFromId, getThreadFromIdImpl): New methods.
Index: java/lang/ThreadGroup.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/lang/ThreadGroup.java,v
retrieving revision 1.21
diff -u -r1.21 ThreadGroup.java
--- java/lang/ThreadGroup.java 10 May 2006 13:54:51 -0000 1.21
+++ java/lang/ThreadGroup.java 1 Jul 2006 12:39:11 -0000
@@ -749,4 +749,43 @@
parent.removeGroup(this);
}
}
+
+ /*
+ * Helper method for the VM. Find a Thread by its Id.
+ *
+ * @param id The Thread Id.
+ * @return Thread object or null if thread doesn't exist.
+ */
+ static Thread getThreadFromId(long id)
+ {
+ return root.getThreadFromIdImpl(id);
+ }
+
+ private Thread getThreadFromIdImpl(long id)
+ {
+ synchronized (threads)
+ {
+ for (int i = 0; i < threads.size(); i++)
+ {
+ Thread t = (Thread) threads.get(i);
+ if (t.getId() == id)
+ return t;
+ }
+ }
+ Vector groups = this.groups;
+ if (groups != null)
+ {
+ synchronized (groups)
+ {
+ for (int i = 0; i < groups.size(); i++)
+ {
+ ThreadGroup g = (ThreadGroup) groups.get(i);
+ Thread t = g.getThreadFromIdImpl(id);
+ if (t != null)
+ return t;
+ }
+ }
+ }
+ return null;
+ }
} // class ThreadGroup