130 * or method in this class will cause a {@link NullPointerException} to be
131 * thrown.
132 *
133 * @author unascribed
134 * @see Runnable
135 * @see Runtime#exit(int)
136 * @see #run()
137 * @see #stop()
138 * @since 1.0
139 */
140 public
141 class Thread implements Runnable {
142 /* Make sure registerNatives is the first thing <clinit> does. */
143 private static native void registerNatives();
144 static {
145 registerNatives();
146 }
147
148 private volatile String name;
149 private int priority;
150 private Thread threadQ;
151 private long eetop;
152
153 /* Whether or not the thread is a daemon thread. */
154 private boolean daemon = false;
155
156 /* JVM state */
157 private boolean stillborn = false;
158
159 /* What will be run. */
160 private Runnable target;
161
162 /* The group of this thread */
163 private ThreadGroup group;
164
165 /* The context ClassLoader for this thread */
166 private ClassLoader contextClassLoader;
167
168 /* The inherited AccessControlContext of this thread */
169 private AccessControlContext inheritedAccessControlContext;
170
171 /* For autonumbering anonymous threads. */
172 private static int threadInitNumber;
173 private static synchronized int nextThreadNum() {
174 return threadInitNumber++;
175 }
176
177 /* ThreadLocal values pertaining to this thread. This map is maintained
|
130 * or method in this class will cause a {@link NullPointerException} to be
131 * thrown.
132 *
133 * @author unascribed
134 * @see Runnable
135 * @see Runtime#exit(int)
136 * @see #run()
137 * @see #stop()
138 * @since 1.0
139 */
140 public
141 class Thread implements Runnable {
142 /* Make sure registerNatives is the first thing <clinit> does. */
143 private static native void registerNatives();
144 static {
145 registerNatives();
146 }
147
148 private volatile String name;
149 private int priority;
150
151 /* Whether or not the thread is a daemon thread. */
152 private boolean daemon = false;
153
154 /* Fields reserved for exclusive use by the JVM */
155 private boolean stillborn = false;
156 private long eetop;
157
158 /* What will be run. */
159 private Runnable target;
160
161 /* The group of this thread */
162 private ThreadGroup group;
163
164 /* The context ClassLoader for this thread */
165 private ClassLoader contextClassLoader;
166
167 /* The inherited AccessControlContext of this thread */
168 private AccessControlContext inheritedAccessControlContext;
169
170 /* For autonumbering anonymous threads. */
171 private static int threadInitNumber;
172 private static synchronized int nextThreadNum() {
173 return threadInitNumber++;
174 }
175
176 /* ThreadLocal values pertaining to this thread. This map is maintained
|