衍生的问题
AccessControlContext 类的作用 在线程里面的作用
ThreadLocal 源码分析 父子ThreadLocal
parkBlocker 关于LockSupport具体的操作
Interruptible blocker
Contended 注解
blockedOn
@HotSpotIntrinsicCandidate
类简介
一个Thread是在程序中可以执行的线程。java虚拟机允许一个应用在运行时并发的执行大量的线程。
每个线程都有一个优先级。优先级高的线程将会更加偏好优先执行。任何线程都可能被标记为守护线程。当一个线程中创建了另一个线程对象,新的线程对象的优先级将会被初始化为创建他的线程的优先级。守护线程只能创建守护线程。
当一个java虚拟机启动的时候,通常有一个被叫做mian的用户线程。java虚拟机将会一直运行线程直到下列事情发生:
- Runtime类的exit方法被调用 并且安全管理器允许其被调用。
2.所有的非守护线程都已经死亡,或者非守护线程返回或者被抛出异常。
有两种方式创建可以执行的线程,一个是创建一个集成thread的类并且重写run方法。这个子类就可以启动了。另外一个是创建一个实现了Runnable接口的类,并且在创建Thread的时候当成一个参数传进来。
每一个线程都有一个名字,多个线程可能具有相同的名称。如果在创建线程时未指定名称,则为其生成新名称。
除非另有说明,否则在thread构造方法或者方法中传递一个null参数将会报空指针异常。
字段
name 名字
priority 优先级
daemon 是否是守护线程
stillborn jvm使用的字段 字面意思是是否任然存活
eetop
private Runnable target; 要执行的runnable
private ThreadGroup group; 线程所在线程组的引用
private ClassLoader contextClassLoader; 上下文的类加载器
private AccessControlContext inheritedAccessControlContext;
private static int threadInitNumber; 用于产生名字的计数器
ThreadLocal.ThreadLocalMap threadLocals
ThreadLocal.ThreadLocalMap inheritableThreadLocals
stacksize 线程栈的大小 0表示忽略
private long nativeParkEventPointer; jvm私有的状态在本地线程结束的时候维护。
private final long tid; 线程的id
private static long threadSeqNumber;
private volatile int threadStatus; 线程的状态
volatile Object parkBlocker;
private volatile Interruptible blocker
构造方法
![](https://img.haomeiwen.com/i14537192/501dccf2d9373529.png)
成员函数
nextThreadNum 用于产生线程名字的。
nextThreadID 用于产生线程id的。
blockedOn 在中断的时候
网友评论