jdk源码之Thread
一、Thread源码
public class Thread
extends Object
implements Runnable
二、介绍
线程是程序中执行的线程。 Java虚拟机允许应用程序同时执行多个执行线程。 每个线程都有优先权。 具有较高优先级的线程优先于优先级较低的线程执行。 每个线程可能也可能不会被标记为守护程序。 当在某个线程中运行的代码创建一个新的Thread对象时,新线程的优先级最初设置为等于创建线程的优先级,并且当且仅当创建线程是守护进程时才是守护线程。
当Java虚拟机启动时,通常有一个非守护进程线程(通常调用某些指定类的名为main的方法)。 Java虚拟机将继续执行线程,直到发生以下任一情况:
- 所有不是守护线程的线程都已经死亡
- 要么从对
run 方法的调用中返回,要么抛出一个异常,并传播到run 方法之外
三、嵌套类
Enum Thread.State
NEW
线程尚未启动的线程状态。
RUNNABLE
可运行线程的线程状态。处于可运行状态的线程正在 Java 虚拟机中执行,但它可能正在等待来自操作系统的其他资源,例如处理器。
BLOCKED
处于阻塞状态的线程等待监控锁的状态。一个处于阻塞状态的线程正在等待监控锁,以进入一个同步块/方法或在调用Object.wait()后重新进入一个同步块/方法。
WAITING
等待线程的线程状态,由于调用以下方法之一,线程处于等待状态:
Object.wait没有超时
Thread.join没有超时
LockSupport.park
等待状态的线程正在等待另一个线程执行特定的动作。 例如,已在对象上调用 <tt>Object.wait()<tt> 的线程正在等待另一个线程在其上调用 <tt>Object.notify()<tt> 或 <tt>Object.notifyAll()<tt>。调用 <tt>Thread.join()<tt> 的线程正在等待指定的线程终止。
TIMED_WAITING
具有指定等待时间的等待线程的线程状态。 线程处于定时等待状态,因为在指定的正等待时间内调用以下方法之一:
Thread.sleep
Object.wait与超时
Thread.join与超时
LockSupport.parkNanos
LockSupport.parkUntil
TERMINATED
终止线程的线程状态。
四、属性
static int MAX_PRIORITY
线程可以拥有的最大优先级。 10
static int MIN_PRIORITY
线程可以拥有的最小优先级。 5
static int NORM_PRIORITY
分配给线程的默认优先级。 1
|