我们的学习过程是遵循总分总的结构,先看到整个的相关体系架构,完了再各个击破,最后在回看整个架构会有更深的理解。
首先从工具类看我们有以下3个大分类:
并发安全其实就是为了保证数据的准确性做的一些工作,这里我们首先需要了解以下概念
互斥:多线程执行共享变量的这段代码可能会导致竞争状态,因此我们将此段代码称为临界区(criticalsection),它是执行共享资源的代码片段,一定不能给多线程同时执行。
所以我们希望这段代码是互斥(mutualexclusion)的,也就说执行临界区(criticalsection)代码段的只能有一个线程,其他线程阻塞等待,达到排队效果。
互斥并不只是针对多线程的竞争条件,同时还可用于多进程,避免共享资源混乱。
互斥解决的问题:互斥解决了「多进程/线程」对临界区使用的问题,但是它没有解决「多进程/线程」协同工作的问题
同步: 所谓同步,就是「多进程/线程间」在一些关键点上可能需要互相等待与互通消息,这种相互制约的等待与互通信息称为「进程/线程」同步。
JUC中使用互斥同步的锁有synchronized ReentrantLock ReadWriteLock ..等等
同步的工具类有Collections.synchronizedList() vector等