目录

day3

一,JUC同步工具

1,LongAdder  ,  Atomic ,sync

2,LOCK

3,公平锁

4,ReentrantLock  vs  sync

5,CountDownLatch  倒数的门栓

6,CyclicBarrier 循环栅栏

7,Guava RateLimiter 限流

8,MarriagePhaser 1.7 循环栅栏

9,ReasWiriteLock 读写锁

10,Semaphore  信号灯

11,Exchange 交换器


day3

一,JUC同步工具

1,LongAdder  ,  Atomic ,sync

LongAdder  >  Atomic >  sync  高并发下效率高

Atomic >  sync

CAS(无锁(乐观锁)优化 自旋)

线程多,操作时间短的情况下,自旋锁大于系统锁的性能

LongAdder  >  Atomic 

CAS(无锁(乐观锁)优化 自旋)的基础上

内部分段:例如1000个线程,分成4个250个线程在一起工作,然后把这个4个一加。

线程数特别多,有明显优势。

2,LOCK

.可重入锁

可重入锁:锁一次后,可以对同样的锁再锁一次 。线程1获得锁,当线程1执行完任务再次进入的时候,在锁的头上记录有线程的标识号,对比后发现一致,继续执行,不需要额外申请。

子类实现调用父类。

sync  m1 {}
sync  m2 {}new Thread(rl:m1).startt();
new Thread(rl:m2).startt();

//这时1先拿到锁,2永远最后执行

//但是如果在1里面调用2,两个方法都可以执行。

sync  方法 == sync(this) 是同一把锁

.reentrantLock

使用reentrantLock 重写例子,与sync 不同的是,需要在finally里解锁

.tryLock 尝试申请时间

在指定之间内,尝试获取锁

.lockInterruptibly 可以对interrput()方法做出响应

sync

一旦wait之后,必须notify才能醒来。

lock

可以被打断的加锁,使用interrput(),可以打断加锁

---todo

3,公平锁

new ReentrantLock(true);

谁等待在前面,谁先执行。而不是一起抢。就是排不排队

先到得线程在等待队列中,

公平锁:新来的线程会查看队列中是否有线程,如果有,进入队列等待;

非公平锁:新来的线程直接抢锁是可能抢到得。

不是绝对的公平,只是先取队列中的。你还没排队,我买完东西后,又排队了。

4,ReentrantLock  vs  sync

锁的类型·

trylock

lockInterruptibly

公平和非公平

5,CountDownLatch  倒数的门栓

倒数的门栓:等待结束

await();//阻塞

countDown();//-1,本身是原子的

也可以使用join

6,CyclicBarrier 循环栅栏

循环栅栏:

CyclicBarrier cb = new CyclicBarrier (20,new Runnable(){run(){满20人,发车}})CyclicBarrier cb = new CyclicBarrier (20,()-> );cb.await();//加人

读取数据场景

数据库,网络,文件必须都读到才能执行,

顺序执行太慢,并发执行并使用CyclicBarrier大大节约执行时间。

使用时间比较:1+2+3      1,2,3里最长的

7,Guava RateLimiter 限流

场景:限流

8,MarriagePhaser 1.7 循环栅栏

arriveAndAwaitAdvance();//等待到达

arriveAndAwaitderegistert();//阶段停止

按不同的阶段执行:分阶段执行,需要多个参与的。(遗传算法)

循环栅栏,多个关卡,每个关卡的线程数。

场景:结婚  到达,吃,离开,洞房

不同的人有不同的阶段

所有人到才能开席,新浪新娘才能洞房

9,ReasWiriteLock 读写锁

读(共享)写(排他,互斥)锁

读多,写少,保证数据的一致性。读写都需要加锁,避免脏读。

10,Semaphore  信号灯

限流,同时只允许多少个线程执行。高速口,5个收费窗口

线程执行去获取锁,才能执行。限制的不是多少线程,而是限制多少线程同时执行。

公平,非公平

11,Exchange 交换器

交换器,两个线程交换数据使用。阻塞交换,继续执行。

多个阻塞再两两交换。

游戏中交换装备,DNF交易

乐关锁:aqs,悲观锁:sync  ,自旋锁:aqs,读写锁(排它锁,共享锁):lock,分段锁:ConcurrentHashMap,Segment

多线程与高并发(二) JUC相关推荐

  1. 尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发

    本期内容包括 JUC多线程并发.JVM和GC等目前大厂笔试中会考.面试中会问.工作中会用的高频难点知识. 斩offer.拿高薪.跳槽神器,对标阿里P6的<尚硅谷_互联网大厂高频重点面试题(第2季 ...

  2. 【闲聊杂谈】直击重灾区 - 多线程与高并发

    在开始学习多线程与高并发的知识之前,我想先问一个问题:你平时在写代码的时候,有没有刻意的去思考如何压榨CPU性能?其实纵观整个编程的发展历史,其实就是一部对于CPU性能压榨的血泪史. 单进程人工切换 ...

  3. 多线程与高并发整理总结【超全面】

    我们先说一下为什么要讲多线程和高并发? 原因是,你想拿到一个更高的薪水,在面试的时候呈现出了两个方向的现象: 第一个上天 项目经验 高并发.缓存.大流量.大数据量的架构设计 第二个入地 各种基础算法, ...

  4. java多线程实例_多线程&高并发(全网最新:面试题+导图+笔记)面试手稳心不慌...

    前言 当你开始开始去跳槽面试的时候,明明只是一份15K的工作,却问你会不会多线程,懂不懂高并发,火箭造得让你猝及不防,结果就是凉凉:现如今市场,多线程.高并发编程.分布式.负载均衡.集群等可以说是现在 ...

  5. 多线程&高并发(全网最新:面试题 + 导图 + 核心学习笔记)面试手稳心不慌,轻松拿下 offer,秋招跳槽必不可少的底层能力

    前言 当你开始开始去跳槽面试的时候,明明只是一份 15K 的工作,却问你会不会多线程,懂不懂高并发,火箭造得让你猝及不防,结果就是凉凉:现如今市场,多线程.高并发编程.分布式.负载均衡.集群等可以说是 ...

  6. 多线程与高并发基础一(超发--多线程悲观锁,乐观锁、类数据库悲观锁乐观锁)

    PS:看完文章后对自己以前所做过的并发和锁机制有了深入原理的了解. 知其然和知其所以然! 遂以记之! 关键词: 线程,同步,单例,高并发,高访问,死锁 一.大规模并发带来的挑战 在过去的工作中,我曾经 ...

  7. 【Java】多线程与高并发

    多线程与高并发 synchronized 篇 进程 线程 协程/纤程(Quasur) 线程:一个程序里不同的执行路径 public static class T1 extends Thread{@Ov ...

  8. 如何掌握java多线程,高并发,大数据方面的技能?

    https://www.zhihu.com/question/27575123 如何掌握java多线程,高并发,大数据方面的技能? 因为想进入互联网公司,然后发现互联网类型的公司问的主要问题都离不开这 ...

  9. 多线程与高并发-volatile与CAS

    多线程与高并发-volatile与CAS 1.volatile 1.1volatile的作用 1.2 DCL单例模式 1.3 volatile与synchronized的区分 2.CAS ABA问题 ...

最新文章

  1. 谈谈HTTP1.0,HTTP1.1和HTTP2.0区别
  2. 转载:Ununtu下中文乱码解决方案
  3. Selenium2(WebDriver)总结(五)---元素操作进阶(常用类)
  4. Centos 开机后,登录时无法输入密码怎么解决
  5. 过滤器用到了java哪个模式_设计模式之过滤器模式——Java语言描述
  6. 2021.4.23最新mac11.1 big sur 关于CocoaPods安装和使用
  7. 计算机教学论研究生,课程与教学论(计算机)专业硕士学位研究生培养方案
  8. 程序员能自己独立进行程序开发,为何要去公司上班呢?真相出来了!
  9. 银河麒麟双击deb包无法安装
  10. 数学分析教程(科大)——2.4笔记+习题
  11. pptswot分析图怎么做_SWOT分析工具图表模板.ppt
  12. 锂电池电源管理系统设计与实现(单片机)
  13. VM虚拟机安装CentOS7添加硬盘扩展存储空间的方法
  14. 60行C代码实现一个shell
  15. Huffman Tree
  16. java的round函数怎么用_Java Math round()用法及代码示例
  17. 教教你如何配置汤姆猫 和 Java 环境变量的设置
  18. ESXi、PVE、unRaid的介绍及对比
  19. 算法 64式 7、搜索算法整理_第4部分_46到60题
  20. 写c语言时鼠标变成黑色柱体

热门文章

  1. mysql数据库找不到表
  2. 图像评价指标(python)
  3. 【华为OD机试真题 JAVA】寻找身高相近的小朋友
  4. 攻防世界-favorite_number
  5. C++架构之美:设计卓越应用
  6. 高一计算机应用基础知识点,计算机应用基础知识点
  7. 测试工程师相亲:29岁年薪50w,竟找不到对象~网友不淡定了
  8. win7任务栏出现计算机网络连接怎么办,win7任务栏网络图标显示未连接 连接不可用解决方法...
  9. 销售员与客户沟通的思路都有哪些
  10. C/C++关于无符号整型数与有符号整型数相运算