分类: Java
2011-06-23 13:57:57
其实就是想看看wait方法怎么用,做了一个循环,每循环一次,wait 2秒。但是现在编译能通过,运行报错,程序如下: package com; public class WaitTest { public void again2(int i) { while (i < 5) { System.out.println(i); try { wait(2000); } catch (InterruptedException e) { // 忽略 } i++; } } public static void main(String[] args) { WaitTest wt = new WaitTest(); wt.again2(0); } } 运行后报错如下: 0 Exception in thread "main" java.lang.IllegalMonitorStateException at java.lang.Object.wait(Native Method) at com.WaitTest.again2(WaitTest.java:8) at com.WaitTest.main(WaitTest.java:18)
问题补充:
哦 我知道原因了,用wait要加上对象锁,这样写就对了 package com; public class WaitTest { public void again2(int i) { synchronized (this) { while (i < 5) { System.out.println(i); try { wait(2000); } catch (InterruptedException e) { // 忽略 } i++; } } } public static void main(String[] args) { WaitTest wt = new WaitTest(); wt.again2(0); } }