java 继承线程_java-线程从生成线程继承锁

线程不会从其他线程继承锁,这里发生了其他事情.

在您的示例中,正在运行methodA的线程必须先对spawnedThread进行锁定,然后才能进入同步块.

然后,当spawnedThread运行时,它必须获取自身的锁,才能在run方法中输入同步块.

因此methodA线程具有锁,而spawnedThread试图获取相同的锁.但这不会死锁,因为Thread.join在放弃锁的位置执行等待,请参见api documentation for Thread.join:

This implementation uses a loop of this.wait calls conditioned on this.isAlive. As a thread terminates the this.notifyAll method is invoked. It is recommended that applications not use wait, notify, or notifyAll on Thread instances.

没有超时值的Thread.join版本将锁定它所加入的线程,将其放弃并进入休眠状态.它不会唤醒,直到发生以下情况之一:

1)被加入的线程完成(发送唤醒等待线程的通知)

2)连接线程被中断(意味着某些调用在其上中断,在此示例中不会发生)

3)连接线程自行唤醒(“虚假唤醒”,这是竞争条件导致的,这是罕见的)

我尚不清楚您将如何更改锁以在此处描述的僵局,如您在评论中所述,如果您希望得到答案,请将该代码版本添加到您的问题中.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值