-
共享变量
1.不可变对象
2.事实不可变对象。虽然客观上其对象内容是可变的。但是因为业务需求,可保证其不被改变
3.可变对象。需要同步。同步分为两种情况,第一种是竞争高度激烈的情况下,需要使用锁机制。第二种情况是竞争相对平稳,这个时候可以使用原子操作。
锁分为object对象自带的锁机制、可重入锁以及在此基础上延伸的信号量、栅栏、循环栅栏。(wait,notify).
可重入锁的好处:1.可重入。2.可中断。3.条件控制更加灵活。4.可以非阻塞。
锁的框架有fork/join框架。这个框架是用来分解一个大任务为多个小任务。并发执行。(recursiveTask)
锁的框架有future机制。该机制的主要作用是异步调用。可以获取异步调用的结果,可以控制异步调用的进程。(callable)。
锁的框架还有一个complicationService。该机制的是一次可以异步调用多个线程,然后异步获取每个线程的结果。
-
线程的锁的优化
锁分段,锁分解(提高可伸缩性),避免热点区域,减小锁的范围
-
替换独占锁的策略
并发容器,读写锁,不可变对象,原子变量。
-
死锁发生的条件