X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=libjava%2Fjava%2Flang%2FThread.java;h=5b789630f8670492056402a023edcd8a41762577;hb=d3870ae33ec634985474cbdd34a092d0b9402ca7;hp=a731b0ab252b75492259d87e03c4f5dbf0180f0a;hpb=af3502d049ecdf4dbaa54db91794e5fa8e55abbd;p=pf3gnuchains%2Fgcc-fork.git diff --git a/libjava/java/lang/Thread.java b/libjava/java/lang/Thread.java index a731b0ab252..5b789630f86 100644 --- a/libjava/java/lang/Thread.java +++ b/libjava/java/lang/Thread.java @@ -10,8 +10,6 @@ details. */ package java.lang; -import gnu.gcj.RawData; - /** * @author Tom Tromey * @date August 24, 1998 @@ -200,19 +198,21 @@ public class Thread implements Runnable public Thread (ThreadGroup g, Runnable r, String n) { - // Note that CURRENT can be null when we are creating the very - // first thread. That's why we check it below. Thread current = currentThread (); - - if (g != null) + + if (g == null) { - // If CURRENT is null, then we are creating the first thread. - // In this case we don't do the security check. - if (current != null) - g.checkAccess(); + // If CURRENT is null, then we are bootstrapping the first thread. + // Use ThreadGroup.root, the main threadgroup. + if (current == null) + group = ThreadGroup.root; + else + group = current.getThreadGroup(); } else - g = current.getThreadGroup(); + group = g; + + group.checkAccess(); // The Class Libraries book says ``threadName cannot be null''. I // take this to mean NullPointerException. @@ -220,8 +220,7 @@ public class Thread implements Runnable throw new NullPointerException (); name = n; - group = g; - g.add(this); + group.addThread(this); runnable = r; data = null; @@ -232,7 +231,9 @@ public class Thread implements Runnable if (current != null) { daemon_flag = current.isDaemon(); - priority = current.getPriority(); + int gmax = group.getMaxPriority(); + int pri = current.getPriority(); + priority = (gmax < pri ? gmax : pri); } else { @@ -292,7 +293,7 @@ public class Thread implements Runnable private boolean startable_flag; // Our native data. - private RawData data; + private Object data; // Next thread number to assign. private static int nextThreadNumber = 0;