java中synchronized和ReentrantLock的加锁和解锁能在不同线程吗?如果能,如何实现?_通讯
2023-06-22 03:35:59 来源:博客园
java中synchronized和ReentrantLock的加锁和解锁能在不同线程吗?如果能,如何实现?
【资料图】
答案2023-06-21:
java的:
这个问题,我问了一些人,部分人是回答得有问题的。synchronized这是个关键字,加锁和解锁不是直接用代码实现,所以在代码层面上就杜绝了加锁和解锁不在同一个线程得情况。可以这么说,synchronized是无法实现同一把锁的加锁和解锁在不同线程。
ReentrantLock的加锁和解锁,是在代码层面实现的,所以是可以写出这样的代码,如下:
package com.hikvision;import java.util.concurrent.locks.ReentrantLock;public class Application { private static ReentrantLock lock = new ReentrantLock(); public static void main(String[] args) { // 线程1加锁 Thread thread1 = new Thread(() -> { lock.lock(); try { System.out.println("Thread 1 lock."); } finally { lock.unlock(); } }); // 线程2解锁 Thread thread2 = new Thread(() -> { lock.unlock(); System.out.println("Thread 2 unlock."); }); thread1.start(); try { Thread.sleep(1000); // 等待1秒,确保线程1先执行 } catch (InterruptedException e) { e.printStackTrace(); } thread2.start(); try { Thread.sleep(1000); // 等待1秒,确保线程2先执行 } catch (InterruptedException e) { e.printStackTrace(); } }}运行结果如下:
根据运行结果可以看出,ReentrantLock的加锁和解锁在代码层面上可以实现,但是运行会报异常。说明ReentrantLock不支持同一把锁的加锁和解锁能在不同线程。
综上所述:java中synchronized和ReentrantLock的加锁和解锁不能在不同线程。
go的:
go的sync.Mutex的加锁和解锁能在不同协程吗?如果能,如何实现?
sync.Mutex的加锁和解锁,是在代码层面实现的,所以是可以写出这样的代码,如下:
package mainimport ("fmt""sync""time")func main() {// 加锁和解锁可以不在同一个协程var m sync.Mutexm.Lock()fmt.Println("加锁成功")go func() {time.Sleep(time.Second * 5)m.Unlock()fmt.Println("解锁成功")}()time.Sleep(time.Hour)}根据运行结果可以看出,sync.Mutex的加锁和解锁在代码层面上可以实现,运行也正常。说明sync.Mutex支持同一把锁的加锁和解锁能在不同协程。
综上所述:go中sync.Mutex的加锁和解锁能在不同线程。
总结:
java中synchronized和ReentrantLock都是可重入锁,所以在线程上的加锁和解锁会做限制,加锁和解锁必须在同一线程,并且成对出现。
go的sync.Mutex是不可重入锁,所以在协程上的加锁和解锁没做限制。加锁和解锁可以不在同一协程,但要成对出现。
关键词:
[责任编辑:]
相关阅读
- (2023-06-22)java中synchronized和ReentrantLock的加锁和解锁能在不同线程吗?如果能,如何实现?_通讯
- (2023-06-22)焦点速递!一路劈波斩浪,这支队伍夺得了龙舟赛200米的冠军!
- (2023-06-22)当前速递!国家税务总局玉溪市红塔区税务局原党委委员、副局长、一级主办郭剑忠接受审查调查
- (2023-06-22)来一场人与大自然的“亲密接触”吧 走进哈巴村看生态旅游新发展
- (2023-06-22)恒大地产新增3条被执行记录 执行标的合计8.4亿元|环球焦点
- (2023-06-22)每日观察!15万的轻野之选,试驾四驱带锁的哈弗二代大狗燃油版
- (2023-06-22)百诺医药IPO:3年利润6000多万拟募资10亿,片仔癀等是客户
- (2023-06-22)【天天聚看点】存款利率降了 对我们有哪些影响?
- (2023-06-22)新华保险原党委书记、董事长万峰被开除党籍 天天信息
- (2023-06-22)直接点名!文班亚马:刚下飞机就感受到了马刺球迷的爱
- (2023-06-22)Cloudflare:看似热闹、实则虚火
- (2023-06-22)揭秘芯片“黑市”:高价可轻松买到A100,但已出现“翻新”
- (2023-06-22)LPR利率怎么算贷款利息?举例详解计算方法 今日热搜
- (2023-06-22)2023年端午节食用粽子消费提示
- (2023-06-22)天天资讯:强县行|一根芦笋卖三国 曹县芦笋是如何直达外国人餐桌
- (2023-06-22)TA:纽卡接近签下托纳利,转会费预计7000万欧 环球今热点
- (2023-06-22)猫咪爱睡觉的地方,体现了和主人的信任度
- (2023-06-22)科研人员发现一种蜘蛛新物种_当前滚动
- (2023-06-22)中国经济信心说丨他们为什么纷纷投下“信任票”? 世界微资讯
- (2023-06-22)全球新消息丨游资炒作下中药材价反季节暴涨 药商直呼“打破认知”
- (2023-06-22)魔兽世界利齿青鱼在哪里钓(魔兽世界狂乱的利齿青鱼)
- (2023-06-22)全球关注:打不动了?乌克兰突然宣布重大决定!
- (2023-06-22)ST华铁:第一期员工持股计划锁定期即将到期
- (2023-06-22)新式茶饮融资“久旱逢甘霖” 头部品牌开店、布局供应链“两手抓”
- (2023-06-22)全球通讯!正宗五笔画输入法下载(正宗五笔)
- (2023-06-22)2023水泥行业现状分析 水泥行业未来发展趋势-世界独家
- (2023-06-22)世界速读:大祥税务:蓝色结“三金”情意满潇湘
- (2023-06-22)第九届四川省国际“互联网+”大学生创新创业大赛组织工作培训会举行
- (2023-06-22)【世界报资讯】华阳集团深度报告:电子外后视镜,一触即发
- (2023-06-22)环球聚焦:宏观策略专题报告:青年就业为何与服务复苏背离?
焦点速递!一路劈波斩浪,这支队伍夺得了龙舟赛200
当前速递!国家税务总局玉溪市红塔区税务局原党委委
来一场人与大自然的“亲密接触”吧 走进哈巴村看生
恒大地产新增3条被执行记录 执行标的合计8.4亿元|



