首页 > 解决方案 > 什么导致同步锁卡住?

问题描述

我有这个简单的代码,它只是一个测试用例

        try
    {
        synchronized(this) {
        while(number != 4)
        {
            System.out.println("Waiting...");
            this.wait();
        }
        number = 4;
        this.notifyAll();
        }
        

    }
    catch(InterruptedException e)
    {}

在我所知道的关于使用 wait() 方法的知识中,一旦调用了等待,接下来应该做的事情。但是,在这种情况下,我看不到等待结束。我试图放置第二个同步块,但这似乎不起作用。

你知道是什么导致等待挂起吗?我查了一下死锁,但这似乎是完全不同的事情。

标签: javamultithreadingsynchronizationnachos

解决方案


认为你最好从这里得到一些想法

然后相应地修改您的代码,只要没有另一个线程正在运行。

wait() 方法使当前线程无限期地等待,直到另一个线程为此对象调用 notify() 或 notifyAll()。


推荐阅读