Java多线程源码分析学习(二)

上一篇博客将如何创建一个新的线程,以及简单介绍了下线程如何执行,本章则将对Thread类进行详细介绍,老规矩打开jdk开发API文档:

属性

Java多线程源码分析学习(二)_第1张图片

构造方法:

Java多线程源码分析学习(二)_第2张图片

Java多线程源码分析学习(二)_第3张图片

Java多线程源码分析学习(二)_第4张图片

对常量可以参照常量表:如下

Java多线程源码分析学习(二)_第5张图片

线程优先级

分别是线程的最高优先级、最低优先级以及默认优先级,新建一个流程的时候可以通过setPriority()方法来设置线程的优先级,当然优先级更高的先执行,但也不是说低的优先级就不执行了,这都是有概率的。

可以实验一波:

Java多线程源码分析学习(二)_第6张图片

Java多线程源码分析学习(二)_第7张图片

发现线程优先级并不是想像的优先级越高该线程执行的概率大些,多试验几次后发现并不是这样的,原来线程优先级是针对新建一个流程的执行顺序是在哪个线程之后,但对cpu的抢夺是没有关系的。

接下来是线程状态:

Java多线程源码分析学习(二)_第8张图片

根据api显示,线程的状态有六种分别是NEW、RUNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED

NEW:当实现了Runnable接口,或者继承Thread并且new 了一个对象出来,但还没有调用start()方法的时候

RUNABLE:当线程从NEW状态调用了start()方法之后就进入RUNABLE状态

BLOKED:线程被同步锁锁定时的状态

WAITING:这个时候的线程不会等待cpu时间,只有显示的唤醒才行,否则永远处于这个状态

TIMED_WAITING:这个时候的线程不会等待cpu时间,但到了指定的时间后自动被唤醒

TERMINATED:线程执行完毕的状态

方法详解

public static void yield()

暂停当前正在执行的线程对象,并执行其他线程。

public static Thread currentThread()

 返回对当前正在执行的线程对象的引用

public static void sleep(long millis)

在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)

public void start()

使该线程开始执行;Java 虚拟机调用该线程的 run 方法

public void interrupt()

中断线程

public static boolean interrupted()

测试当前线程是否已经中断

public boolean isInterrupted()

测试线程是否已经中断

public final boolean isAlive()

测试线程是否处于活动状态。如果线程已经启动且尚未终止,则为活动状态

public final void setPriority(int newPriority)

更改线程的优先级

public final void join(long millis)

等待该线程终止的时间最长为 millis 毫秒。超时为 0 意味着要一直等下去

 

 

 

 

 

你可能感兴趣的:(多线程)