All Packages Class Hierarchy This Package Previous Next Index
Class java.lang.Thread
java.lang.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:
- The
exit
method of class Runtime
has been
called and the security manager has permitted the exit operation
to take place.
- All threads that are not daemon threads have died, either by
returning from the call to the
run
method or by
performing the stop
method.
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.
- See Also:
- Runnable, exit, run, stop
-
MAX_PRIORITY
- The maximum priority that a thread can have.
-
MIN_PRIORITY
- The minimum priority that a thread can have.
-
NORM_PRIORITY
- The default priority that is assigned to a thread.
-
Thread()
- Allocates a new
Thread
object.
-
Thread(Runnable)
- Allocates a new
Thread
object.
-
Thread(Runnable, String)
- Allocates a new
Thread
object.
-
Thread(String)
- Allocates a new
Thread
object.
-
Thread(ThreadGroup, Runnable)
- Allocates a new
Thread
object.
-
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
.
-
Thread(ThreadGroup, String)
- Allocates a new
Thread
object.
-
activeCount()
- Returns the current number of active threads in this thread group.
-
checkAccess()
- Determines if the currently running thread has permission to
modify this thread.
-
countStackFrames()
- Counts the number of stack frames in this thread.
-
currentThread()
- Returns a reference to the currently executing thread object.
-
destroy()
- Destroys this thread, without any cleanup.
-
dumpStack()
- Prints a stack trace of the current thread.
-
enumerate(Thread[])
- Copies into the specified array every active thread in this
thread group and its subgroups.
-
getName()
- Returns this thread's name.
-
getPriority()
- Returns this thread's priority.
-
getThreadGroup()
- Returns this thread's thread group.
-
interrupt()
- Interrupts this thread.
-
interrupted()
- Tests if the current thread has been interrupted.
-
isAlive()
- Tests if this thread is alive.
-
isDaemon()
- Tests if this thread is a daemon thread.
-
isInterrupted()
- Tests if the current thread has been interrupted.
-
join()
- Waits for this thread to die.
-
join(long)
- Waits at most
millis
milliseconds for this thread to
die.
-
join(long, int)
- Waits at most
millis
milliseconds plus
nanos
nanoseconds for this thread to die.
-
resume()
- Resumes a suspended thread.
-
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.
-
setDaemon(boolean)
- Marks this thread as either a daemon thread or a user thread.
-
setName(String)
- Changes the name of this thread to be equal to the argument
name
.
-
setPriority(int)
- Changes the priority of this thread.
-
sleep(long)
-
Causes the currently executing thread to sleep (temporarily cease
execution) for the specified number of milliseconds.
-
sleep(long, int)
- Causes the currently executing thread to sleep (cease execution)
for the specified number of milliseconds plus the specified number
of nanoseconds.
-
start()
- Causes this thread to begin execution; the Java Virtual Machine
calls the
run
method of this thread.
-
stop()
-
Forces the thread to stop executing.
-
stop(Throwable)
- Forces the thread to stop executing.
-
suspend()
- Suspends this thread.
-
toString()
- Returns a string representation of this thread, including the
thread's name, priority, and thread group.
-
yield()
- Causes the currently executing thread object to temporarily pause
and allow other threads to execute.
MIN_PRIORITY
public static final int MIN_PRIORITY
- The minimum priority that a thread can have.
NORM_PRIORITY
public static final int NORM_PRIORITY
- The default priority that is assigned to a thread.
MAX_PRIORITY
public static final int MAX_PRIORITY
- The maximum priority that a thread can have.
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++;
}
}
}
- See Also:
- Thread
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.
- See Also:
- Thread
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.
- See Also:
- Thread
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.
- See Also:
- Thread
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.
- See Also:
- Thread
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.
- See Also:
- Thread
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.
- See Also:
- run, run, setDaemon, setPriority, checkAccess
currentThread
public static native Thread currentThread()
- Returns a reference to the currently executing thread object.
- Returns:
- the currently executing thread.
yield
public static native void yield()
- Causes the currently executing thread object to temporarily pause
and allow other threads to execute.
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.
- See Also:
- notify
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.
- See Also:
- notify
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.
- See Also:
- run, stop
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.
- See Also:
- start, stop, Thread, run
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.
- See Also:
- checkAccess, run, start, ThreadDeath, uncaughtException
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.
- See Also:
- checkAccess, run, start, stop
interrupt
public void interrupt()
- Interrupts this thread.
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.
- See Also:
- isInterrupted
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.
- See Also:
- interrupted
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.)
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.
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.
- See Also:
- checkAccess, isAlive
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.
- See Also:
- checkAccess, isAlive
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.
- See Also:
- checkAccess, getPriority, getThreadGroup, MAX_PRIORITY, MIN_PRIORITY, getMaxPriority
getPriority
public final int getPriority()
- Returns this thread's priority.
- Returns:
- this thread's name.
- See Also:
- setPriority
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.
- See Also:
- checkAccess, getName
getName
public final String getName()
- Returns this thread's name.
- Returns:
- this thread's name.
- See Also:
- setName
getThreadGroup
public final ThreadGroup getThreadGroup()
- Returns this thread's thread group.
- Returns:
- this thread's thread group.
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.
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.
- See Also:
- enumerate
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.
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.
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.
join
public final void join() throws InterruptedException
- Waits for this thread to die.
- Throws: InterruptedException
- if another thread has interrupted the
current thread.
dumpStack
public static void dumpStack()
- Prints a stack trace of the current thread. This method is used
only for debugging.
- See Also:
- printStackTrace
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.
- See Also:
- isDaemon
isDaemon
public final boolean isDaemon()
- Tests if this thread is a daemon thread.
- Returns:
-
true
if this thread is a daemon thread;
false
otherwise.
- See Also:
- setDaemon
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.
- See Also:
- checkAccess
toString
public 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
All Packages Class Hierarchy This Package Previous Next Index
Submit a bug or feature