Class java.lang.Thread
All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class java.lang.Thread

Object
   |
   +----java.lang.Thread

public class Thread
extends Object
implements Runnable
A thread is a thread of execution in a program. The Java Virtual Machine allows an application to have multiple threads of execution running concurrently.

Every thread has a priority. Threads with higher priority are executed in preference to threads with lower priority. Each thread may or may not also be marked as a daemon. When code running in some thread creates a new Thread object, the new thread has its priority initially set equal to the priority of the creating thread, and is a daemon thread if and only if the creating thread is a daemon.

When a Java Virtual Machine starts up, there is usually a single non-daemon thread (which typically calls the method named main of some designated class). The Java Virtual Machine continues to execute threads until either of the following occurs:

There are two ways to create a new thread of execution. One is to declare a class to be a subclass of Thread. This subclass should override the run method of class Thread. An instance of the subclass can then be allocated and started. For example, a thread that computes primes larger than a stated value could be written as follows:


     class PrimeThread extends Thread {
         long minPrime;
         PrimeThread(long minPrime) {
             this.minPrime = minPrime;
         }
 
         public void run() {
             // compute primes larger than minPrime
              . . .
         }
     }
 

The following code would then create a thread and start it running:

     PrimeThread p = new PrimeThread(143);
     p.start();
 

The other way to create a thread is to declare a class that implements the Runnable interface. That class then implements the run method. An instance of the class can then be allocated, passed as an argument when creating Thread, and started. The same example in this other style looks like the following:


     class PrimeRun implements Runnable {
         long minPrime;
         PrimeRun(long minPrime) {
             this.minPrime = minPrime;
         }
 
         public void run() {
             // compute primes larger than minPrime
              . . .
         }
     }
 

The following code would then create a thread and start it running:

     PrimeRun p = new PrimeRun(143);
     new Thread(p).start();
 

Every thread has a name for identification purposes. More than one thread may have the same name. If a name is not specified when a thread is created, a new name is generated for it.

Version:
1.71, 08/06/98
Author:
unascribed
Since:
JDK1.0
See Also:
Runnable, exit(int), run(), stop()

Variable Index

 o MAX_PRIORITY
The maximum priority that a thread can have.
 o MIN_PRIORITY
The minimum priority that a thread can have.
 o NORM_PRIORITY
The default priority that is assigned to a thread.

Constructor Index

 o java.lang.Thread()
Allocates a new Thread object.
 o java.lang.Thread(Runnable)
Allocates a new Thread object.
 o java.lang.Thread(ThreadGroup, Runnable)
Allocates a new Thread object.
 o java.lang.Thread(String)
Allocates a new Thread object.
 o java.lang.Thread(ThreadGroup, String)
Allocates a new Thread object.
 o java.lang.Thread(Runnable, String)
Allocates a new Thread object.
 o java.lang.Thread(ThreadGroup, Runnable, String)
Allocates a new Thread object so that it has target as its run object, has the specified name as its name, and belongs to the thread group referred to by group.

Method Index

 o activeCount()
Returns the current number of active threads in this thread group.
 o checkAccess()
Determines if the currently running thread has permission to modify this thread.
 o countStackFrames()
Counts the number of stack frames in this thread.
 o currentThread()
Returns a reference to the currently executing thread object.
 o destroy()
Destroys this thread, without any cleanup.
 o dumpStack()
Prints a stack trace of the current thread.
 o enumerate(Thread[])
Copies into the specified array every active thread in this thread group and its subgroups.
 o getName()
Returns this thread's name.
 o getPriority()
Returns this thread's priority.
 o getThreadGroup()
Returns this thread's thread group.
 o interrupt()
Interrupts this thread.
 o interrupted()
Tests if the current thread has been interrupted.
 o isAlive()
Tests if this thread is alive.
 o isDaemon()
Tests if this thread is a daemon thread.
 o isInterrupted()
Tests if the current thread has been interrupted.
 o join(long)
Waits at most millis milliseconds for this thread to die.
 o join(long, int)
Waits at most millis milliseconds plus nanos nanoseconds for this thread to die.
 o join()
Waits for this thread to die.
 o resume()
Resumes a suspended thread.
 o run()
If this thread was constructed using a separate Runnable run object, then that Runnable object's run method is called; otherwise, this method does nothing and returns.
 o setDaemon(boolean)
Marks this thread as either a daemon thread or a user thread.
 o setName(String)
Changes the name of this thread to be equal to the argument name.
 o setPriority(int)
Changes the priority of this thread.
 o sleep(long)
Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds.
 o sleep(long, int)
Causes the currently executing thread to sleep (cease execution) for the specified number of milliseconds plus the specified number of nanoseconds.
 o start()
Causes this thread to begin execution; the Java Virtual Machine calls the run method of this thread.
 o stop()
Forces the thread to stop executing.
 o stop(Throwable)
Forces the thread to stop executing.
 o suspend()
Suspends this thread.
 o toString()
Returns a string representation of this thread, including the thread's name, priority, and thread group.
 o yield()
Causes the currently executing thread object to temporarily pause and allow other threads to execute.

Variables

 o MAX_PRIORITY
public static final int MAX_PRIORITY
The maximum priority that a thread can have.

Since: JDK1.0
 o MIN_PRIORITY
public static final int MIN_PRIORITY
The minimum priority that a thread can have.

Since: JDK1.0
 o NORM_PRIORITY
public static final int NORM_PRIORITY
The default priority that is assigned to a thread.

Since: JDK1.0

Constructors

 o Thread
public Thread()
Allocates a new Thread object. This constructor has the same effect as Thread(null, null, gname), where gname is a newly generated name. Automatically generated names are of the form "Thread-"+n, where n is an integer.

Threads created this way must have overridden their run() method to actually do anything. An example illustrating this method being used follows:

     import java.lang.*; 

     class plain01 implements Runnable {
         String name; 
         plain01() {
             name = null;
         }
         plain01(String s) {
             name = s;
         }
         public void run() {
             if (name == null)
                 System.out.println("A new thread created");
             else
                 System.out.println("A new thread with name " + name +
                                    " created");
         }
     }
     class threadtest01 {
         public static void main(String args[] ) {
             int failed = 0 ;

             Thread t1 = new Thread();  
             if (t1 != null)
                 System.out.println("new Thread() succeed");
             else {
                 System.out.println("new Thread() failed"); 
                 failed++; 
             }
         }
     }
 

Since:
JDK1.0
See Also:
Thread(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String)
 o Thread
public Thread(Runnable target)
Allocates a new Thread object. This constructor has the same effect as Thread(null, target, gname), where gname is a newly generated name. Automatically generated names are of the form "Thread-"+n, where n is an integer.

Parameters:
target - the object whose run method is called.
Since:
JDK1.0
See Also:
Thread(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String)
 o Thread
public Thread(ThreadGroup group,
              Runnable target)
Allocates a new Thread object. This constructor has the same effect as Thread(group, target, gname), where gname is a newly generated name. Automatically generated names are of the form "Thread-"+n, where n is an integer.

Parameters:
group - the thread group.
target - the object whose run method is called.
Throws: SecurityException
if the current thread cannot create a thread in the specified thread group.
Since:
JDK1.0
See Also:
Thread(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String)
 o Thread
public Thread(String name)
Allocates a new Thread object. This constructor has the same effect as Thread(null, null, name).

Parameters:
name - the name of the new thread.
Since:
JDK1.0
See Also:
Thread(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String)
 o Thread
public Thread(ThreadGroup group,
              String name)
Allocates a new Thread object. This constructor has the same effect as Thread(group, null, name)

Parameters:
group - the thread group.
name - the name of the new thread.
Throws: SecurityException
if the current thread cannot create a thread in the specified thread group.
Since:
JDK1.0
See Also:
Thread(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String)
 o Thread
public Thread(Runnable target,
              String name)
Allocates a new Thread object. This constructor has the same effect as Thread(null, target, name).

Parameters:
target - the object whose run method is called.
name - the name of the new thread.
Since:
JDK1.0
See Also:
Thread(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String)
 o Thread
public Thread(ThreadGroup group,
              Runnable target,
              String name)
Allocates a new Thread object so that it has target as its run object, has the specified name as its name, and belongs to the thread group referred to by group.

If group is not null, the checkAccess method of that thread group is called with no arguments; this may result in throwing a SecurityException; if group is null, the new process belongs to the same group as the thread that is creating the new thread.

If the target argument is not null, the run method of the target is called when this thread is started. If the target argument is null, this thread's run method is called when this thread is started.

The priority of the newly created thread is set equal to the priority of the thread creating it, that is, the currently running thread. The method setPriority may be used to change the priority to a new value.

The newly created thread is initially marked as being a daemon thread if and only if the thread creating it is currently marked as a daemon thread. The method setDaemon may be used to change whether or not a thread is a daemon.

Parameters:
group - the thread group.
target - the object whose run method is called.
name - the name of the new thread.
Throws: SecurityException
if the current thread cannot create a thread in the specified thread group.
Since:
JDK1.0
See Also:
run(), run(), setDaemon(boolean), setPriority(int), checkAccess()

Methods

 o activeCount
public static int activeCount()
Returns the current number of active threads in this thread group.

Returns:
the current number of threads in this thread's thread group.
Since:
JDK1.0
 o checkAccess
public void checkAccess()
Determines if the currently running thread has permission to modify this thread.

If there is a security manager, its checkAccess method is called with this thread as its argument. This may result in throwing a SecurityException.

Throws: SecurityException
if the current thread is not allowed to access this thread.
Since:
JDK1.0
See Also:
checkAccess(java.lang.Thread)
 o countStackFrames
public native int countStackFrames()
Counts the number of stack frames in this thread. The thread must be suspended.

Returns:
the number of stack frames in this thread.
Throws: IllegalThreadStateException
if this thread is not suspended.
Since:
JDK1.0
 o currentThread
public static native java.lang.Thread currentThread()
Returns a reference to the currently executing thread object.

Returns:
the currently executing thread.
Since:
JDK1.0
 o destroy
public void destroy()
Destroys this thread, without any cleanup. Any monitors it has locked remain locked. (This method is not implemented in Java 1.0.2.)

Since:
JDK1.0
 o dumpStack
public static void dumpStack()
Prints a stack trace of the current thread. This method is used only for debugging.

Since:
JDK1.0
See Also:
printStackTrace()
 o enumerate
public static int enumerate(Thread[] tarray)
Copies into the specified array every active thread in this thread group and its subgroups. This method simply calls the enumerate method of this thread's thread group with the array argument.

Returns:
the number of threads put into the array.
Since:
JDK1.0
See Also:
enumerate(java.lang.Thread[])
 o getName
public final java.lang.String getName()
Returns this thread's name.

Returns:
this thread's name.
Since:
JDK1.0
See Also:
setName(java.lang.String)
 o getPriority
public final int getPriority()
Returns this thread's priority.

Returns:
this thread's name.
Since:
JDK1.0
See Also:
setPriority(int)
 o getThreadGroup
public final java.lang.ThreadGroup getThreadGroup()
Returns this thread's thread group.

Returns:
this thread's thread group.
Since:
JDK1.0
 o interrupt
public void interrupt()
Interrupts this thread.

Since:
JDK1.0
 o interrupted
public static boolean interrupted()
Tests if the current thread has been interrupted. Note that interrupted is a static method, while isInterrupted is called on the current Thread instance.

Returns:
true if the current thread has been interrupted; false otherwise.
Since:
JDK1.0
See Also:
isInterrupted()
 o isAlive
public final native boolean isAlive()
Tests if this thread is alive. A thread is alive if it has been started and has not yet died.

Returns:
true if this thread is alive; false otherwise.
Since:
JDK1.0
 o isDaemon
public final boolean isDaemon()
Tests if this thread is a daemon thread.

Returns:
true if this thread is a daemon thread; false otherwise.
Since:
JDK1.0
See Also:
setDaemon(boolean)
 o isInterrupted
public boolean isInterrupted()
Tests if the current thread has been interrupted. Note that isInterrupted is called on the current Thread instance; by contrast, interrupted is a static method.

Returns:
true if this thread has been interrupted; false otherwise.
Since:
JDK1.0
See Also:
interrupted()
 o join
public final synchronized void join(long millis) throws InterruptedException
Waits at most millis milliseconds for this thread to die. A timeout of 0 means to wait forever.

Parameters:
millis - the time to wait in milliseconds.
Throws: InterruptedException
if another thread has interrupted the current thread.
Since:
JDK1.0
 o join
public final synchronized void join(long millis,
                                    int nanos) throws InterruptedException
Waits at most millis milliseconds plus nanos nanoseconds for this thread to die.

Parameters:
millis - the time to wait in milliseconds.
nanos - 0-999999 additional nanoseconds to wait.
Throws: IllegalArgumentException
if the value of millis is negative the value of nanos is not in the range 0-999999.
Throws: InterruptedException
if another thread has interrupted the current thread.
Since:
JDK1.0
 o join
public final void join() throws InterruptedException
Waits for this thread to die.

Throws: InterruptedException
if another thread has interrupted the current thread.
Since:
JDK1.0
 o resume
public final void resume()
Resumes a suspended thread.

First, the checkAccess method of this thread is called with no arguments. This may result in throwing a SecurityException(in the current thread).

If the thread is alive but suspended, it is resumed and is permitted to make progress in its execution.

Throws: SecurityException
if the current thread cannot modify this thread.
Since:
JDK1.0
See Also:
checkAccess(), isAlive()
 o run
public void run()
If this thread was constructed using a separate Runnable run object, then that Runnable object's run method is called; otherwise, this method does nothing and returns.

Subclasses of Thread should override this method.

Since:
JDK1.0
See Also:
start(), stop(), Thread(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String), run()
 o setDaemon
public final void setDaemon(boolean on)
Marks this thread as either a daemon thread or a user thread. The Java Virtual Machine exits when the only threads running are all daemon threads.

This method must be called before the thread is started.

Parameters:
on - if true, marks this thread as a daemon thread.
Throws: IllegalThreadStateException
if this thread is active.
Since:
JDK1.0
See Also:
isDaemon()
 o setName
public final void setName(String name)
Changes the name of this thread to be equal to the argument name.

First the checkAccess method of this thread is called with no arguments. This may result in throwing a SecurityException.

Parameters:
name - the new name for this thread.
Throws: SecurityException
if the current thread cannot modify this thread.
Since:
JDK1.0
See Also:
checkAccess(), getName()
 o setPriority
public final void setPriority(int newPriority)
Changes the priority of this thread.

First the checkAccess method of this thread is called with no arguments. This may result in throwing a SecurityException.

Otherwise, the priority of this thread is set to the smaller of the specified newPriority and the maximum permitted priority of the thread's thread group.

Throws: IllegalArgumentException
If the priority is not in the range MIN_PRIORITY to MAX_PRIORITY.
Throws: SecurityException
if the current thread cannot modify this thread.
Since:
JDK1.0
See Also:
checkAccess(), getPriority(), getThreadGroup(), MAX_PRIORITY, MIN_PRIORITY, getMaxPriority()
 o sleep
public static native void sleep(long millis) throws InterruptedException
Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds. The thread does not lose ownership of any monitors.

Parameters:
millis - the length of time to sleep in milliseconds.
Throws: InterruptedException
if another thread has interrupted this thread.
Since:
JDK1.0
See Also:
notify()
 o sleep
public static void sleep(long millis,
                         int nanos) throws InterruptedException
Causes the currently executing thread to sleep (cease execution) for the specified number of milliseconds plus the specified number of nanoseconds. The thread does not lose ownership of any monitors.

Parameters:
millis - the length of time to sleep in milliseconds.
nanos - 0-999999 additional nanoseconds to sleep.
Throws: IllegalArgumentException
if the value of millis is negative or the value of nanos is not in the range 0-999999.
Throws: InterruptedException
if another thread has interrupted this thread.
Since:
JDK1.0
See Also:
notify()
 o start
public native synchronized void start()
Causes this thread to begin execution; the Java Virtual Machine calls the run method of this thread.

The result is that two threads are running concurrently: the current thread (which returns from the call to the start method) and the other thread (which executes its run method).

Throws: IllegalThreadStateException
if the thread was already started.
Since:
JDK1.0
See Also:
run(), stop()
 o stop
public final void stop()
Forces the thread to stop executing.

First, the checkAccess method of this thread is called with no arguments. This may result in throwing a SecurityException (in the current thread).

The thread represented by this thread is forced to stop whatever it is doing abnormally and to throw a newly created ThreadDeath object as an exception.

It is permitted to stop a thread that has not yet been started. If the thread is eventually started, it immediately terminates.

An application should not normally try to catch ThreadDeath unless it must do some extraordinary cleanup operation (note that the throwing of ThreadDeath causes finally clauses of try statements to be executed before the thread officially dies). If a catch clause catches a ThreadDeath object, it is important to rethrow the object so that the thread actually dies.

The top-level error handler that reacts to otherwise uncaught exceptions does not print out a message or otherwise notify the application if the uncaught exception is an instance of ThreadDeath.

Throws: SecurityException
if the current thread cannot modify this thread.
Since:
JDK1.0
See Also:
checkAccess(), run(), start(), ThreadDeath, uncaughtException(java.lang.Thread, java.lang.Throwable)
 o stop
public final synchronized void stop(Throwable o)
Forces the thread to stop executing.

First, the checkAccess method of this thread is called with no arguments. This may result in throwing a SecurityException (in the current thread).

If the argument obj is null, a NullPointerException is thrown (in the current thread).

The thread represented by this thread is forced to complete whatever it is doing abnormally and to throw the Throwable object obj as an exception. This is an unusual action to take; normally, the stop method that takes no arguments should be used.

It is permitted to stop a thread that has not yet been started. If the thread is eventually started, it immediately terminates.

Parameters:
obj - the Throwable object to be thrown.
Throws: SecurityException
if the current thread cannot modify this thread.
Since:
JDK1.0
See Also:
checkAccess(), run(), start(), stop()
 o suspend
public final void suspend()
Suspends this thread.

First, the checkAccess method of this thread is called with no arguments. This may result in throwing a SecurityException (in the current thread).

If the thread is alive, it is suspended and makes no further progress unless and until it is resumed.

Throws: SecurityException
if the current thread cannot modify this thread.
Since:
JDK1.0
See Also:
checkAccess(), isAlive()
 o toString
public java.lang.String toString()
Returns a string representation of this thread, including the thread's name, priority, and thread group.

Returns:
a string representation of this thread.
Overrides:
toString in class Object
Since:
JDK1.0
 o yield
public static native void yield()
Causes the currently executing thread object to temporarily pause and allow other threads to execute.

Since:
JDK1.0

All Packages  Class Hierarchy  This Package  Previous  Next  Index