永发信息网

如何使用java的锁机制

答案:2  悬赏:0  手机版
解决时间 2021-01-25 04:38
如何使用java的锁机制
最佳答案
可以在临界区代码开始的位置执行Lock类的lock方法,为代码块加锁,而在临界区的出口使用相同Lock实例的unlock方法,释放临界区资源。
Demo2-12中,主线程先创建了一个lockTest对象test,然后将相同的test对象交给两个不同的线程执行。子线程1获取到了lock后,开始执行before sleep输出语句,遇到sleep后,线程1阻塞将会放弃执行权,这时线程2可以获取执行权,当线程2执行lock方法时,发现锁已经被别的线程获取,所以线程2阻塞等待lock的释放。线程1从sleep中被唤醒后,将继续执行after sleep语句,之后释放了锁,此时线程2从锁等待中被唤醒,执行临近区的内容,因此Demo2-12的输出是先线程1的两条语句,之后才输出线程2的两条语句。而Demo2-13在没有锁的保护下,程序无法保证先将线程1的两条语句输出后再执行线程2的输出,因此,Demo2-13的输出结果是交叉的。
全部回答
多线程同步的实现最终依赖锁机制。我们可以想象某一共享资源是一间屋子,每个人都是一个线程。当a希望进入房间时,他必须获得门锁,一旦a获得门锁,他进去后就立刻将门锁上,于是b,c,d...就不得不在门外等待,直到a释放锁出来后,b,c,d...中的某一人抢到了该锁(具体抢法依赖于jvm的实现,可以先到先得,也可以随机挑选),然后进屋又将门锁上。这样,任一时刻最多有一人在屋内(使用共享资源)。 java语言规范内置了对多线程的支持。对于java程序来说,每一个对象实例都有一把“锁”,一旦某个线程获得了该锁,别的线程如果希望获得该锁,只能等待这个线程释放锁之后。获得锁的方法只有一个,就是synchronized关键字。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
用什么软件P视频
桥西综合商业街地址在什么地方,我要处理点事
一券在手的券 查字典的步骤怎么写?
刚接了个电话,中国电信打的。说要给我送手机
交行一次逾期弄得我现在什么也办不了怎么办25
购车新规可以异地购车,意思是新规后买车就可
世界最佳11人,跟国家队套加成吗
请问,圆珠笔、钢笔和水笔(钢笔),哪种写出
请问如果专科到大二可以参加专升本考试吗?
各种花的花程式1.木芙蓉花程式.2.龙葵花程式.
慢吞吞地干什么
有一首可爱女生唱的,比优比优比,比优比,我
用韩文翻译“周鑫”
银行卡消磁了可以推迟一年时间再去办理可以吗
你好用韩语怎么写
推荐资讯
不参与细胞生物膜系统组成的结构是A. 线粒体B
遂然的意思是什么
小天才电话手表三代多少钱
食物在消化道被咀嚼和搅拌的过程是;物理消化
离完婚的女人,会后悔吗?
如果我们被现实磨平了棱角,那么又该如何在这
雨花台区西善蔬菜园艺场在什么地方啊,我要过
我的新股申购额度沪市5000股,怎么突然额度为
高考答题卡上的两个大题答案填反了,有文字说
在△ABC与△DEF中,∠A=70°,∠B=60°,∠E=50
儿子20岁了天天看手机小说不想上班要怎么样才
关于POTPALYER播放器用了LAV和MADVR后播放10H
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?