Thread

作者: 小蜗牛Aaron | 来源:发表于2020-01-25 00:53 被阅读0次

衍生的问题

AccessControlContext 类的作用 在线程里面的作用
ThreadLocal 源码分析 父子ThreadLocal
parkBlocker 关于LockSupport具体的操作
Interruptible blocker
Contended 注解
blockedOn
@HotSpotIntrinsicCandidate

类简介

一个Thread是在程序中可以执行的线程。java虚拟机允许一个应用在运行时并发的执行大量的线程。

每个线程都有一个优先级。优先级高的线程将会更加偏好优先执行。任何线程都可能被标记为守护线程。当一个线程中创建了另一个线程对象,新的线程对象的优先级将会被初始化为创建他的线程的优先级。守护线程只能创建守护线程。

当一个java虚拟机启动的时候,通常有一个被叫做mian的用户线程。java虚拟机将会一直运行线程直到下列事情发生:

  1. 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

构造方法

成员函数

nextThreadNum 用于产生线程名字的。
nextThreadID 用于产生线程id的。
blockedOn 在中断的时候

相关文章

网友评论

    本文标题:Thread

    本文链接:https://www.haomeiwen.com/subject/hedhthtx.html