1.Thread创建的写法
a)继承Thread,重写run
b)实现Runnadle,重写run
c)继承Thread,重写run,使用匿名内部类
d)实现Runnable,重写run,使用匿名内部类
e)使用lambda
2.Threa中的核心属性/方法
a)id
b)name
c)daemon 后台线程
d)isAlive 判断系统内核中的线程是否存在
e)start 启动线程
f)线程终止的写法:使用Threa提供的标志位 isInterruptted / interrupt(即使线程中出现sleep等阻塞操作也能被提前唤醒。)
3.线程的等待
为了让代码更加有序,不让线程相互抢占
t.join();
join不影响谁先开始
线程安全问题(面试重点)
Java中对线程的状态大概分为6个状态
1:NEW:Thread对象有了,还没调用star,系统内部的线程还未创建
2:Terminated:线程已经终止了,内核中的线程已经销毁了,Thread对象还在
3:RUNNABLE:就绪状态 分为两种情况,a)这个线程正在CPU上执行 b)这个线程虽然没在cpu上执行,但是随时可以调度到CPU上执行
456都是阻塞状态
4:WAITING:死等进入的阻塞
5:TIMED_WAITING:带有超时时间的阻塞
6:BLOCKED:进行锁竞争的阻塞