什么场景下回使用多线程
主要解决等待的问题,有以下两类场景
通过并行计算来来提高程序的执行性能如可以在报表中异步查询,同步做组装来减少消耗时间。
减少I/0,响应的阻塞如tomcat的IO模型
如何实现多线程:
无返回结果:Thread,Runnable
有返回结果:Callable
如何优雅的使用线程
如通过阻塞队列来实现对请求的异步化处理
线程状态
查看线程状态
线程的终止
Stop:不推荐,暴力终止,相当于kill
通过标志位来终止线程:Interrupt,Stop
线程的复位
恢复到默认值,也就是falseThread.interrupted
线程安全性
线程安全分为3类问题:
可见性:线程A对变量c进行修改,线程B仍然使用原来的变量值,无法使用最新值
原子性:在多线程的情况下,无法实现原子递增
有序性:程序执行的顺序和代码的顺序不一样,原因是编译器或Cpu为了提高代码的执行效率,进行了重排序。
�