type
status
date
slug
summary
tags
category
icon
password

image-20230715164639635
设置线程优先级
默认优先级
创建一个类实现Runnable接口,创建多线程,打印线程优先级
结果
没有设置优先级的情况下就是 5
那 main 线程的优先级是多少呢?
结果
设置优先级
优先级高只是说明拿到 cpu 执行的概率越高,并不是说一定会拿到 cpu。在上面的例子中,优先级低的也有概率先执行完,只是概率低。
守护线程
守护线程就是当其他普通线程执行完毕之后,守护线程也就没有继续执行的必要了,就停止了。
将一个线程设置为守护线程的方法
应用场景
比如说 qq 聊天,我们打开一个聊天窗口,这就是一个线程,然后传输文件(这也是一个线程),当把窗口关闭的时候,传输文件的窗口也就没有必要存在了,所以可以把传输文件的线程给关闭,但是问题是可以把线程指定为某一个线程的守护线程吗。
GC回收器线程就是一个守护线程。当我们的程序中没有其他线程在执行了,那么也就没有垃圾产生了,也就不需要 GC 回收器了。
礼让线程
礼让线程就是当一个线程里面执行这个方法的时候就会把cpu 的执行权让出去,交给其他线程去执行。宏观上面的表现就是有 yield()这个方法调用的次数会少,因为他每次抢到线程之后就把cpu 的执行权让出去了。
插入线程
t线程插入到当前这个线程之前,宏观表现就是先执行完 t线程,再往下执行。
线程的生命周期
从下图可以看到,线程的生命周期是,先创建线程,进入就绪状态,就绪状态并不代表已经开始执行了,而是代表它可以抢 cpu 的执行权了,拿到了就可以运行了,运行完就死亡了。但是在运行的时候也可能会进入阻塞状态,比如 sleep(),此时cpu 的执行权就没有了,等到 sleep 方法执行完毕之后就会回到就绪状态,继续抢cpu 的执行权。

image-20230715192741215