OSDN Git Service

PR libgcj/27730:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Jun 2006 21:37:32 +0000 (21:37 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Jun 2006 21:37:32 +0000 (21:37 +0000)
* java/lang/Thread.java (threadId): New field.
(nextThreadId): New static field.
(Thread): Initialize new field.
(getId): New method.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114524 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/java/lang/Thread.java

index b5b4ef4..838ecf3 100644 (file)
@@ -1,5 +1,13 @@
 2006-06-09  Tom Tromey  <tromey@redhat.com>
 
 2006-06-09  Tom Tromey  <tromey@redhat.com>
 
+       PR libgcj/27730:
+       * java/lang/Thread.java (threadId): New field.
+       (nextThreadId): New static field.
+       (Thread): Initialize new field.
+       (getId): New method.
+
+2006-06-09  Tom Tromey  <tromey@redhat.com>
+
        * java/lang/Class.java (getClassLoaderInternal): Now native.
 
 2006-06-09  Thomas Fitzsimmons  <fitzsim@redhat.com>
        * java/lang/Class.java (getClassLoaderInternal): Now native.
 
 2006-06-09  Thomas Fitzsimmons  <fitzsim@redhat.com>
index 505b99b..bac1afd 100644 (file)
@@ -127,6 +127,12 @@ public class Thread implements Runnable
   /** The context classloader for this Thread. */
   private ClassLoader contextClassLoader;
 
   /** The context classloader for this Thread. */
   private ClassLoader contextClassLoader;
 
+  /** This thread's ID.  */
+  private final long threadId;
+
+  /** The next thread ID to use.  */
+  private static long nextThreadId;
+
   /** The default exception handler.  */
   private static UncaughtExceptionHandler defaultHandler;
 
   /** The default exception handler.  */
   private static UncaughtExceptionHandler defaultHandler;
 
@@ -354,12 +360,17 @@ public class Thread implements Runnable
       }
     else
       group = g;
       }
     else
       group = g;
-      
+
     data = null;
     interrupt_flag = false;
     alive_flag = false;
     startable_flag = true;
 
     data = null;
     interrupt_flag = false;
     alive_flag = false;
     startable_flag = true;
 
+    synchronized (Thread.class)
+      {
+        this.threadId = nextThreadId++;
+      }
+
     if (current != null)
       {
        group.checkAccess();
     if (current != null)
       {
        group.checkAccess();
@@ -1027,6 +1038,18 @@ public class Thread implements Runnable
     return defaultHandler;
   }
   
     return defaultHandler;
   }
   
+  /** 
+   * Returns the unique identifier for this thread.  This ID is generated
+   * on thread creation, and may be re-used on its death.
+   *
+   * @return a positive long number representing the thread's ID.
+   * @since 1.5 
+   */
+  public long getId()
+  {
+    return threadId;
+  }
+
   /**
    * <p>
    * This interface is used to handle uncaught exceptions
   /**
    * <p>
    * This interface is used to handle uncaught exceptions