千家信息网

Lock和Synchronizer有什么关系

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Lock和Synchronizer有什么关系,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Synchronizer,它是
千家信息网最后更新 2026年11月01日Lock和Synchronizer有什么关系

Lock和Synchronizer有什么关系,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Synchronizer,它是一个根据自身状态调节线程执行的对象。就是用来协调(多)线程执行的对象。从这个角度讲Java的内置锁就是一种synchronizer,它以互斥的可重入的方式协调/控制线程的执行。

Java的阻塞队列也是一种synchronizser。

再比如:信号量Semaphore、闭锁Latch、关卡Barrier都是不同类型的synchronizer。

信号量

Semaphore可以用来控制同时访问某资源的线程数量。把对这些资源的获取操作包装起来,获取资源前先调用信号量的acquire()申请许可,资源使用使用完毕后通过release()释放许可。对池化资源的管理一般可用信号量完成。

闭锁

英文Latch有门闩的意思,门闩就是用来把门关紧不让出入。在并发编程里也是这个意思,我们用latch这个对象禁止线程的执行,什么时候允许线程通过这个门闩呢?对于CountDownLatch来说,就是计数变为0的时候。对于FutureTask来说就是可以拿到计算结果的时候(当然也可能是计算异常了)。一个应用场景:可以把闭锁当作一个发令枪,它可以让线程等到信号后一起运行。

关卡

Barrier中文就是"障碍物、栅栏"的意思,文绉绉的翻译就是"关卡"。它其实像极了闭锁,与闭锁不同的是:闭锁等待的是事件,而关卡等待的是线程。从API调用的感觉感觉上讲,Barrier是在工作线程正儿八经的工作都执行完毕后(取决于业务场景),调用barrier.await()使工作线程阻塞住,直到所有其它工作线程也都完成个各自的任务并都调用了barrier.await(),这个时候关卡就被冲破。这里等待的条件是有足够的线程调用barrier.await()。而Latch是在工作线程中调用latch.await(),等待闭锁被开启来执行。闭锁是怎样被开启的?它是依靠latch.countDown()到0后被开启的,谁countdown跟哪个线程没什么直接关系。而barrier.await()是需要实实在在的线程阻塞,这就是为什么说barrier等待的是线程,latch等的是信号。

经常使用关卡到场景是,一个任务分成n个子任务后,等待这n个子任务都完成后再做下一步工作。

CyclicBarrier的构造函数接受一个线程数以及一个关卡被突破后要执行的动作。

Exchanger是另一种关卡,用来为两个线程交换数据,当然是以线程安全的方式交换。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

线程 关卡 就是 信号 工作 资源 任务 时候 信号量 对象 意思 门闩 阻塞 不同 个子 场景 感觉 方式 是在 帮助 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东万易互联网科技有限公司惠州分公司 西安纸贵互联网科技有限公司 互联网科技战争 网络科技有限互联网 与互联网科技公司 互联网络科技有限公司 万达互联网科技 互联网科技公司的市场部门 互联网和高科技公司 互联网教育科技公司vipkid 重庆威客帮互联网科技 互联网金融中的现代科技 河南猎农互联网科技有限公司 千方科技属于互联网企业吗 青海科技产业互联网发展 佛山市拉法互联网科技有限公司 唯美互联网科技 互联网的黑科技实验室 银川新华互联网科技学校招聘 广州全民伙伴互联网科技有限公司 互联网科技公司简介 金融科技还是互联网 南京欣网互联网科技 互联网科技公司介绍 中国科技互联网公司收入 互联网科技热点资讯 允成互联网科技有限公司融资 济南小医互联网科技有限公司招聘 上海旺乐尼互联网科技有限公司 科技美学互联网 艺术
0