在程序中使用多线程的目的是什么?
1、提高效率,增加任务的吞吐量
2、提升CPU等资源的利用率,减少CPU的空转
多线程的应用在日常开发中很多,带来了很多的便利,让我们以前研究下在多线程场景中要注意问题吧,一般主要从这三个方面考虑
1、原子性
2、可见性
3、有序性
如果不能保证原子性、可见性和顺序性会有什么问题?这些问题怎么解决呢?让我们一起来看下
一、原子性
原子性的操作是不可被中断的一个或一系列操作。
个人理解,严格的原子性的操作,其他线程获取操作的变量时,只能获取操作前的变量值和操作后的变量值,不能获取到操作过程中的中间值,在操作过程中其他操作需要获取变量值,需要进入阻塞状态等待操作结束。
如果不能保证原子性会有什么问题呢
让我们一块看一个简单例子吧
首先写一个简单的线程,代码如下
public class ThreadDemo implements Runnable{
int no = 0;
@Override
publ