当前位置: 首页 > 知识库问答 >
问题:

当其他线程访问同步块时,一个线程等待多长时间?

薛寒
2023-03-14

线程可以等待,直到其他线程释放访问同步块的锁。我想知道当其他线程访问同步块时,一个线程可以等待多长时间?什么时候它会知道另一个线程释放了锁?

共有1个答案

宇文育
2023-03-14

如果在一个线程中同步了变量,则尝试使用 lock 进行同步的所有其他线程都将被阻止,直到不再同步锁定为止。

//all other threads waiting on thread 1...
synchronized(lock)
{
    //thread 1 storing digits of pi into linked list... or whatevs.
}

正如其他人所说,线程将无限期地等待变量变得可用于同步。

 类似资料:
  • 我如何启动两个线程,其中thread1首先执行,thread2在thread1结束时启动,而主方法线程可以在不锁定其他两个线程的情况下继续工作? 我尝试了join(),但是它需要从线程调用,线程必须等待另一个线程,没有办法执行类似thread2.join(thread1)的操作;因此,如果我在main()中调用join,我将有效地停止主线程的执行,而不仅仅是Thread2的执行。 #编辑:为什么我

  • 我想更多地了解线程睡眠解析是如何工作的,以及它与睡眠()解析之外的内容有什么联系。 我知道它是由操作系统定义的,而在Windows上通常是15ms。我最近环顾四周无法确认这一点,但我依稀记得这个15ms是由操作系统循环的,并且对所有线程都是“全局的”,这意味着15ms不是线程可以Hibernate的最短时间,而是最大Hibernate时间(1)。对吗?所有操作系统都一样吗(超过持续时间)? 我想不

  • 我做了几个线程转储,发现有16个线程在等待同一个锁,例如: “__ejb-thread-pool1”守护进程prio=6 tid=0x39657c00 nid=0x1c08在条件[0x3297f000]java.lang.thread.state:waiting(parking)在sun.misc.unsafe.park(本机方法)-在java.util.concurrent.locks.lock

  • 方法有一个有趣的属性,它将允许其他线程在被阻止时进入其同步块。例如(假设线程1首先运行): 线程1: 线程2: 线程 2 能够唤醒线程 1 的事实意味着线程 2 进入了同步块,即使其他某个线程位于同一对象的同步块中也是如此。这对我来说很好,但我想知道这是否只发生在或所有会使线程“等待”的方法()上。在我的情况下,我关心,因为如果行为与相同,它会破坏我的代码: 那么,多个线程是否可能因为join调用

  • 问题内容: 我们正在做一个MySQL的小型基准测试,我们希望了解它对数据的性能。 该测试的一部分是查看当多个并发线程对服务器执行各种查询时,服务器如何工作。 在MySQL文档(5.0)是不是多线程的客户真的清楚。我应该指出,我确实针对线程安全库()进行了链接 我正在使用准备好的语句,并且同时执行读取(SELECT)和写入(UPDATE,INSERT,DELETE)操作。 我应该为每个线程打开一个连