一、线程的6中状态:
1、New(初始)
2、Runnable
3、Blocked
4、Waiting
5、Time_waiting
6、Terminated
二、线程各种状态的切换
三、如何终止一个线程?
1:stop()->不建议使用,相当于kill -9
2:flag(设置一个volatile成员变量,通过更改成员变量的变化来终止线程)
代码片段如下:
public class ThreadFlag implements Runnable {
private volatile static boolean exit = false ;
public void run(){
while(!exit){
System.out.println("线程正在运行..");
}
}
public static void main (String [] args){
ThreadFlag t1 = new ThreadFlag();
Thread thread = new Thread(t1);
thread.start();
try {
thread.sleep(5000); // 主线程延迟5秒
exit = true ;
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程退出!");
}
}
在定义exit时,使用了一个 Java关键字volatile,这个关键字的目的是使exit同步,也就是说在同一时刻只能由一个线程来修改exit的值,
3:interrupt方法
四、join方法的作用和原理
1、顺序执行线程,代码片段如下
五:synchronized 存在哪里?
synchronized 保存在对象头(对象在内存里的布局->对象头)里