多线程

  • 共享变量

1.不可变对象
2.事实不可变对象。虽然客观上其对象内容是可变的。但是因为业务需求,可保证其不被改变
3.可变对象。需要同步。同步分为两种情况,第一种是竞争高度激烈的情况下,需要使用锁机制。第二种情况是竞争相对平稳,这个时候可以使用原子操作。
  锁分为object对象自带的锁机制、可重入锁以及在此基础上延伸的信号量、栅栏、循环栅栏。(wait,notify).

  可重入锁的好处:1.可重入。2.可中断。3.条件控制更加灵活。4.可以非阻塞。
  锁的框架有fork/join框架。这个框架是用来分解一个大任务为多个小任务。并发执行。(recursiveTask)
  锁的框架有future机制。该机制的主要作用是异步调用。可以获取异步调用的结果,可以控制异步调用的进程。(callable)。

  锁的框架还有一个complicationService。该机制的是一次可以异步调用多个线程,然后异步获取每个线程的结果。

  • 线程的锁的优化

  锁分段,锁分解(提高可伸缩性),避免热点区域,减小锁的范围

  • 替换独占锁的策略

  并发容器,读写锁,不可变对象,原子变量。

  • 死锁发生的条件

原文地址:https://www.cnblogs.com/cat-and-water/p/6541441.html