线程只有5中状态,整个生命周期就是这5中状态的切换
![](https://img.haomeiwen.com/i2102897/1ec3100a6c848cd8.png)
run()和start() :run方法就是普通对象的普通方法,只有调用了start()后,Java才会将线程对象和操作系统中实际的线程进行映射,再来执行run方法。
yield():让出cpu的执行权,将线程从运行转到就绪状态,但是下个时间片,该线程依然有可能被再次选中运行。
线程的优先级
取值为1~10,缺省为5,但线程的优先级不可靠,不建议作为线程开发时候的手段
守护线程
和主线程共死,finally不能保证一定执行
volatile 关键字(最轻量的同步机制)
适用于只有一个线程写,多个线程读的场景,因为他只能确保可见性;
ThreadLocal
线程变量,可以理解为是个map,类型 Map<Thread,Integer>
sychronized 内置锁
对象锁,锁的是类的对象实例;
类所,锁的是每个类的class对象,每个类的Class对象在一个虚拟机中只有一个,所以类锁也只有一个;
网友评论