您得到的是java.lang.IllegalMonitorStateException
因为您调用的对象wait()
(t1
)不拥有同步锁.
请注意,当您将方法声明为时,该方法synchronized
的锁定所有者是当前对象(Bees
在这种情况下是您的实例).如果你想打电话wait()
的t1
,你需要同步的t1
:
... Thread t1 = new Thread(); synchronized(t1) { t1.start(); System.out.print("1 "); t1.wait(5000); } ...
另外,在捕获异常时,应始终将异常本身包含在日志输出中,至少应该如此
... } catch (Exception e) { System.out.println("thrown to main" + e); } ...
否则,您可能会错过重要信息(例如实际抛出了哪个异常).
另请参阅Java™教程:同步.
您得到的是java.lang.IllegalMonitorStateException
因为您调用的对象wait()
(t1
)不拥有同步锁.
请注意,当您将方法声明为时,该方法synchronized
的锁定所有者是当前对象(Bees
在这种情况下是您的实例).如果你想打电话wait()
的t1
,你需要同步的t1
:
... Thread t1 = new Thread(); synchronized(t1) { t1.start(); System.out.print("1 "); t1.wait(5000); } ...
另外,在捕获异常时,应始终将异常本身包含在日志输出中,至少应该如此
... } catch (Exception e) { System.out.println("thrown to main" + e); } ...
否则,您可能会错过重要信息(例如实际抛出了哪个异常).
另请参阅Java™教程:同步.