当前位置: 首页>编程语言>正文

33_多线程高级

1.线程状态

33_多线程高级,第1张
33_多线程高级,第2张
因为线程运行是和cpu交互,所以虚拟机没有定义运行状态
33_多线程高级,第3张

2.线程池

2.1.基本原理

33_多线程高级,第4张
33_多线程高级,第5张
33_多线程高级,第6张
33_多线程高级,第7张
33_多线程高级,第8张
33_多线程高级,第9张
33_多线程高级,第10张
33_多线程高级,第11张

2.2.代码实现

33_多线程高级,第12张
33_多线程高级,第13张

2.3.代码实现--创建指定上限的线程池

33_多线程高级,第14张
33_多线程高级,第15张

newFixedThreadPool创建的线程池也是空的,参数表示最大值而不是初始值

2.4.自己创建线程池

33_多线程高级,第16张
33_多线程高级,第17张
33_多线程高级,第18张
33_多线程高级,第19张
排队是只能10人排队,后面的拒绝服务。同时服务的最多是6个。
33_多线程高级,第20张
33_多线程高级,第21张
33_多线程高级,第22张

2.5.参数解析

33_多线程高级,第23张
33_多线程高级,第24张

2.6.任务拒绝策略

33_多线程高级,第25张
33_多线程高级,第26张
  • DiscardOldestPolicy 最大线程数都执行,然后队列以及队列外的选最后一个执行
  • CallerRunsPolicy 自己执行不过来,请求别人执行

3.volatile

3.1.概述

33_多线程高级,第27张
33_多线程高级,第28张
33_多线程高级,第29张
33_多线程高级,第30张
33_多线程高级,第31张

注意:jdk版本对结果会有影响,12是控制台无输出,程序一直运行。1.8是控制输出结婚基金已经不是10万,程序运行结束

3.2.volatile

33_多线程高级,第32张
33_多线程高级,第33张
33_多线程高级,第34张
33_多线程高级,第35张
33_多线程高级,第36张
33_多线程高级,第37张

3.3.synchronized

33_多线程高级,第38张
33_多线程高级,第39张

4.原子性

4.1.概述

33_多线程高级,第40张
送冰淇淋和收冰淇淋需要都有
33_多线程高级,第41张
33_多线程高级,第42张
已经送了9999个冰淇淋
33_多线程高级,第43张
a线程自增之后,数据还没有写到共享数据,b线程抢到cpu执行权,从共享数据读取到变量副本中,自增。理论上,两个线程自增应该是102,但是现在是101
33_多线程高级,第44张

4.2.volatile和加锁

33_多线程高级,第45张
33_多线程高级,第46张
33_多线程高级,第47张

加锁是可以的

4.3.原子类

33_多线程高级,第48张
33_多线程高级,第49张
33_多线程高级,第50张

4.4.原子类内存解析

  • 同步代码块慢,先判断锁,获取锁,执行代码,释放锁。
  • count++分为三步,执行每一步的时候,cpu执行权都有可能被抢走。我们希望这三步要么同是成功,要么同时失败。


    33_多线程高级,第51张
    33_多线程高级,第52张
    两个线程的自增都完成了
    33_多线程高级,第53张
    33_多线程高级,第54张
    33_多线程高级,第55张
    33_多线程高级,第56张

4.4.原子类源码解析

33_多线程高级,第57张

4.5.悲观锁和乐观锁

33_多线程高级,第58张

5.并发工具类

5.1.Hashtable

33_多线程高级,第59张
33_多线程高级,第60张
33_多线程高级,第61张
hashtable采用悲观锁,效率低
33_多线程高级,第62张
33_多线程高级,第63张

5.2.ConcurrentHashMap

33_多线程高级,第64张
33_多线程高级,第65张

5.3.ConcurrentHashMap1.7原理

33_多线程高级,第66张
33_多线程高级,第67张
33_多线程高级,第68张
33_多线程高级,第69张
存入小数组0索引不扩容,1索引扩容。大数组永远不扩容。16张小的哈希表凑在一起变成一张大的哈希表。
33_多线程高级,第70张
33_多线程高级,第71张

5.4.ConcurrentHashMap1.8原理

33_多线程高级,第72张
第一次添加元素的时候才开始初始化
33_多线程高级,第73张
33_多线程高级,第74张
33_多线程高级,第75张
锁对象是头结点
33_多线程高级,第76张
33_多线程高级,第77张

5.5.CountDownLatch

33_多线程高级,第78张
33_多线程高级,第79张
33_多线程高级,第80张
33_多线程高级,第81张
33_多线程高级,第82张
33_多线程高级,第83张

5.6.Semaphore

33_多线程高级,第84张
33_多线程高级,第85张
33_多线程高级,第86张
33_多线程高级,第87张

https://www.xamrdz.com/lan/5d71997590.html

相关文章: