线程“main”中的异常 java.lang.IllegalMonitorStateException

2024-03-23

我正在与Thread in Java我收到以下错误 - 我不明白为什么?!

Code:

import java.util.Random;

public class Test {


    public static void main(String[] args) throws InterruptedException {
     Vlakno sude = new Vlakno("myName"); // Vlakno = thread class

        sude.start();
        sude.wait(); // ERROR IS ON THIS LINE
    }

}

class Vlakno extends Thread {

    private boolean canIRun = true;
    private final String name;

    Vlakno(String name) {
        this.name = name;
    }

    @Override
    public void run() {
        while (canIRun) {
          //  System.out.println("Name: " + name);
        }
    }

    public void mojeStop() {
        System.out.println("Thread "+name +" end...");
        this.canIRun = false;
    }
}

为了应对IllegalMonitorStateException,您必须验证仅当调用线程拥有适当的监视器时才会发生所有 wait 方法的调用。最简单的解决方案是将这些调用包含在内部synchronized块。应在中调用的同步对象synchronized语句是必须获取其监视器的语句。

synchronize (sude) {
  sude.wait();
}

有关更多信息和示例,请查看here http://examples.javacodegeeks.com/java-basics/exceptions/java-lang-illegalmonitorstateexception-how-to-solve-illegalmonitorstateexception/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

线程“main”中的异常 java.lang.IllegalMonitorStateException 的相关文章

随机推荐