小编S. *_*Doe的帖子

在同一台监视器上等待的两个线程可以称为死锁吗?

两个线程在同一个监视器上等待,例如,如果一个线程在"lock"上调用wait,而另一个获取监视器的线程在通知第一个线程之前也调用wait.现在两个线程都在等待,但没有人得到通知.我怎么称呼这种情况?这可以称为僵局吗?

编辑: 假设这些是唯一的两个线程,并且无法从其他地方通知它们.
更新:我刚刚创建了我所描述的情况.以下代码在侦听器线程之前启动更换器线程的大部分时间都可以正常工作.但是,当我在更换器之前启动监听器时,程序只会在打印两行(一个来自转换器,一个来自侦听器线程)后挂起.我在更换器之前调用监听器的情况会被称为死锁吗?

package demo;

public class ProducerConsumer {

public static int SAMPLE_INT = 0;

public static void main(String[] args) {

    PC pc = new PC();

     Thread changer = new Thread(new Runnable() {
        public void run(){
            try {
                pc.producer();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
     });

    Thread listener = new Thread(new Runnable(){
        public void run() {
            try {
                pc.consumer();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    });
    changer.start();
    listener.start(); 
   }
 }

class PC {

Object …
Run Code Online (Sandbox Code Playgroud)

java multithreading deadlock

6
推荐指数
1
解决办法
688
查看次数

标签 统计

deadlock ×1

java ×1

multithreading ×1