java - 停放 JAVA 线程会导致释放任何获取的监视器吗

标签 java multithreading concurrency deadlock java.util.concurrent

当线程执行通过停放线程而暂停时,是否会导致线程放弃任何已获取的对象监视器的所有权?

简而言之,如果一个线程 (t1) 获取“this”对象的监视器并被停放,而另一个线程 (t2) 尝试通过首先尝试获取“this”的监视器并阻塞来解除停放 t1,则以下代码是否会死锁.

// Thread t1 executes this code first.
syncronized(this) {
    LockSupport.park();
}

// Thread t2 then executes this piece of code.
synchronized(this) {
    LockSupport.unpark(t1);
}

最佳答案

因为t1会出现死锁被阻止并且仍然拥有 this 的锁对象时 t2正在尝试获取相同的锁。

关于java - 停放 JAVA 线程会导致释放任何获取的监视器吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42964878/

相关文章:

java - 单播与可移植远程对象

java - 使ArrayList添加线程安全而不使用线程安全集合

java - JTextField 未正确更新

java - Thread.sleep() 内部是如何工作的

java - 在 JavaMail 中使用 message.getFrom() 时仅获取要显示的电子邮件地址

java - 在Recyclerview中排序/搜索/过滤以从Mysql检索数据

linux - 设置亲和性会导致执行时间增加

c++ - 如何在c linux中通过服务器处理多个套接字客户端

Java并发: Can I create a pool using worker thread

java - 使用 registerServlet 方法时收到多个语法错误