【问题标题】:Call wait() from a Class on other Thread从其他线程上的类调用 wait()
【发布时间】:2011-04-16 07:50:37
【问题描述】:

我想在其他线程上调用wait(),因为如果我当前的类正在执行某些部分代码不想被其他线程打断.. 为此我正在这样做

主类

testThread as=new testThread();
try{
    synchronized(as) {
        wait();
    }
} catch (Exception e) {
    Log.d(tag, "In ==Scheduler== error"+e.toString());
}

testThread.class

public void run() {
    while(true) {
        System.out.println("Thread"); 
        try {
            Thread.sleep(6000);
        } catch(Exception r) {

        }
    }
}

并得到以下错误

error java.lang.IllegalMonitorStateException: 在wait()之前对象没有被线程锁定

为什么会出现此错误,我该如何解决?

【问题讨论】:

    标签: java android


    【解决方案1】:

    要么

    synchronized(as)
    {
        as.wait();
    }
    

    synchronized(this)
    {
        wait();
    }
    

    根据你想要的。您需要同步您正在等待的任何内容。

    【讨论】:

    • 那是因为您的显示器也是如此,并且它永远不会被调用 notify 唤醒
    • 当然,“等待”的意思是“等待”!!您需要通过从另一个线程调用线程对象上的“通知”来唤醒等待的线程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    相关资源
    最近更新 更多