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)