特点:
线程安全,多线程执行的时候是线程安全的
线程安全主要体现在以下三个方面:
原子性:提供了互斥访问,同一时刻只能有一个线程对它进行操作
可见性:一个线程对主内存的修改可以及时的被其他线程观察到
有序性:一个线程观察其他线程中的指令执行顺序,由于指令重排序的存在,该观察结果一般杂乱无序
言归正传:
背景:公司有个计算的需求,需要执行很长时间必须使用异步执行,然后监控其执行状态。
代码实现:
定义:
private AtomicBoolean inCalAll = new AtomicBoolean(false);
线程中使用:
通过接口返回计算状态:
说明:
通过在代码前后设置inCalAll的值来判断当前线程的任务是否已经执行完,然后前端可以通过轮训请求状态接口的方式来查看计算状态。
实现原理:
通过源码可以看到AtomicBoolean的value值是由volatile关键字修饰的,所以是线程安全的。volatile关键字可以查看:https://blog.csdn.net/fumitzuki/article/details/81630048
总结
好记性不如烂笔头,希望大家都可以养成一个良好的编程习惯。