zhizhesoft

  • 首页
Java高并发
Java高并发

AQS(线程同步器)介绍

1. 什么是AQS AQS - AbstractQueuedSynchronizerAQS定义了实现线程同步器的基础框架, 线程同步器的作用是协调多个线程对共享资源的访问。 AbstractQueuedSynchronizer派生出Java并发包的重要类, 如下:- CountDownLatch(倒计时同步器)- CyclicBarrier(循环栅栏同步器) - Semaphore(信号量同步器) [ˈseməfɔ:(r)]- ReentrantLock(可重入锁) 在多个线程共享同一个资源时, 可以基于AQS的相…

2022年8月1日 0条评论 35点热度 0人点赞 risingsun 阅读全文
Java高并发

Java高并发编程基础三大利器 - CountDownLatch

1. 什么是CountDownLatch CountDownLatch是一个线程倒计时锁。 CountDownLatch是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就减1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上(调用await方法的线程)等待的线程就可以恢复工作了。   2. 应用场景 把一个大任务拆分N个部分,让多个工作线程(Worker)执行。每个工作线程(Worker)执行完自己的部分计数器就减1。当所有子部分都完成后,主线程才继续向下执行。 例子…

2022年7月29日 0条评论 23点热度 0人点赞 risingsun 阅读全文
Java高并发

Java高并发编程基础三大利器 - Semaphore

1. 什么是Semaphore Semaphore(信号量)是用来控制同时访问特定资源的线程数量, 它通过协调各个线程, 以保证合理的使用公共资源。 比喻解释: 我们可以把Semaphore比作是控制流量的红绿灯。eg:XX马路要限制流量, 只允许同时有一百辆车在这条路上行使, 其他的都必须在路口等待。如果前一百辆车看到绿灯, 可以开进这条马路;后面的车会看到红灯, 不能驶入XX马路。但是如果前一百辆中有五辆车已经离开了XX马路, 那么后面就允许有5辆车驶入马路。 这个例子里说的车就是线程驶入马路就表示线程在执行离…

2022年7月29日 0条评论 20点热度 0人点赞 risingsun 阅读全文
Java高并发

Java高并发(1)

1、同步和异步的区别和联系: 所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到 返回的值或消息后才往下执行其它的命令。 异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回 值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。 同步在一定程度上可以看做是单线程,这个线程请求一个方法后就待这个方法给他回复,否则他不往下执行(死心眼)。 异步在一定程度上可以看做是多线程的(废话,一个线程怎么叫异…

2020年9月6日 0条评论 19点热度 0人点赞 risingsun 阅读全文
Java高并发

《重学Java高并发》Sempahore的使用场景与常见误区

大家好,我是威哥,《RocketMQ技术内幕》一书作者,荣获RocketMQ官方社区优秀布道师、CSDN2020博客执之星Top2等荣誉称号。目前担任中通快递技术平台部资深架构师,主要负责全链路压测、消息中间件、数据同步等产品的研发与落地,拥有千亿级消息集群的运维经验,不仅实践经验丰富,而且对其源代码有深入且系统的研究。欢迎大家关注我,一起抱团发展。 JUC,java并发框架也是面试中的常客,而Semaphore信号量又是JUC的重头戏。 Semaphore简单吗?使用起来非常简单,但最近生产环境遇到一个故障,最终…

2020年8月3日 0条评论 23点热度 0人点赞 risingsun 阅读全文
Search

COPYRIGHT © 2022 zhizhesoft. ALL RIGHTS RESERVED.