thread非synchronizedメソッドでwaitメソッドを呼び出す
3237 ワード
thread非synchronizedメソッドでwaitメソッドを呼び出す
一般的に、waitメソッドまたはnotifyメソッドを呼び出すと、synchronizedコードブロック内で呼び出すように要求されますが、synchronizedコードブロックで実行しないとどのような状況になりますか?
テスト:
public void waitTest() throws InterruptedException {
this.wait();
}
public void notifyTest() throws InterruptedException {
this.notify();
}
上記のいずれかのコード・セグメントを実行すると、IllegalMonitorStateException例外が放出されます.
Exception in thread "main" java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at com.java.thread.InterruptThreadTest.waitTest(InterruptThreadTest.java:19)
at com.java.thread.InterruptThreadTest.main(InterruptThreadTest.java:14)