一.
最常见创建线程的方式:实现Runable接口,重写run方法
优点:接口多实现类的单继承
资源共享
注意:多个线程同时操作同一份资源就有可能出现数据不安全问题可以通过共享的标识控制多线程执行中线程的结束
重写juc包下callbale接口,重写call方法,在call方法中定义线程体
创建与开启:使用线程池实现
优点:
1.call中可以抛出异常
2.call可以存在返回值(线程执行完毕的结果)
ExecutorService:提供了一些线程池管理线程执行的相关方法
Future表示异步计算的结果
线程状态:
新生状态:
就绪状态:调用start方法,线程就会进入绪队列
运行状态:当cpu调度就绪的线程,线程开始执行。
阻塞状态:线程一旦进入阻塞状态,需要等待阻塞解除
终止状态:
当线程进入阻塞状态,阻塞状态接触后不会直接恢复到运行状态,会直接进入到就绪状态,等待cpu的下次调度
如果一个线程已经进入终止状态,无法恢复
如何进入终止状态:
1.正常执行完毕
2.stop()已过时,不推荐
3.通过添加标识判断
如何进入就绪状态:
1.start()
2.阻塞恢复
3.线程切换,cpu调度切换
4.yield() 礼让线程
如何进入阻塞状态: