changes to MGC class library
[IRC.git] / Robust / src / ClassLibrary / MGC / Thread.java
index 14ed23e539a67f83bc537b8ec92da028745b00e6..d48dade6d724e1e83603950fcd6168c46bfdca30 100644 (file)
@@ -1,16 +1,34 @@
 public class Thread implements Runnable {
+  static long id = 0;
   private boolean finished;
   Runnable target;
+  private boolean daemon;
+  private long threadId;
+  String name;
   
   public Thread(){
     finished = false;
     target = null;
+    daemon = false;
+    threadId = Thread.id++;
+  }
+  
+  public long getId()
+  {
+    return threadId;
   }
   
   public Thread(Runnable r) {
     finished = false;
     target = r;
   }
+  
+  public Thread(Runnable r, String n)
+  {
+    finished = false;
+    target = r;
+    name = n;
+  }
 
   public void start() {
     nativeCreate();
@@ -18,6 +36,7 @@ public class Thread implements Runnable {
 
   private static void staticStart(Thread t) {
     t.run();
+    t.finished = true;
   }
 
   public static native void yield();
@@ -34,10 +53,33 @@ public class Thread implements Runnable {
     if(target != null) {
       target.run();
     }
+    this.finished = true;
   }
 
   private native void nativeCreate();
   
-  public final native boolean isAlive();
+  public final boolean isAlive() {
+    return !this.finished;
+  }
+  
+  public native ThreadLocalMap getThreadLocals();
+  
+  public final synchronized void setDaemon(boolean daemon) {
+    /*if (vmThread != null)
+      throw new IllegalThreadStateException();
+    checkAccess();*/
+    this.daemon = daemon;
+  }
+  
+  public static Thread currentThread()
+  {
+    System.out.println("Unimplemented Thread.currentThread()!");
+    return null;
+  }
+  
+  public static Map getAllStackTraces() {
+    System.out.println("Unimplemented Thread.getAllStackTraces()");
+    return new Map();
+  }
 
 }