java并发编程(一)
java并发编程(一)引言多线程的知识点是一个庞大的体现,对此也是一知半解。一直想系统的深入的学习多线程的知识,奈何一直没有找到机会,好吧,其实就是懒。最近在项目中接触到一个多并发的项目,在项目中踩了无数的坑。在此下定决心做一个并发的学习笔记。 为什么并发会有安全问题当两个线程同时对一个共享可变变量进行操作时,例如:两个线程对变量i=1同时执行i++操作。执行完毕后i可能并不等于3而是等于2。因为i++不是原子性的操作,i++实际上是有三个步骤第一步:读取,从主内存中将i=1读取到本地内存中。第二步:修改,i自增。第三部:写入,将i=2写会到缓存中。所以当两个线程同时将i读取到工作内存中,并分别将变量i赋值为2。 原子性原子性是指一个操作是不可中断的,要么全部执行成功要么全部执行失败,有着“同生共死”的感觉。及时在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程所干扰。 可见性可见性是指当一个线程修改了共享变量后,其他线程能够立即得知这个修改。为什么要这样说?难道一个线程修改了共享变量其他线程不一定会立即得知这个变量的修改?没错事实确实如此。简单的举一个例子。在这里插入图片描...
