即使在通知当前线程之后,下面的代码也不会执行(使用此).
public synchronized void test() { String str = new String(); try { System.out.println("Test1"); this.wait(); this.notifyAll(); System.out.println("Test2"); } catch (Exception e) { // Todo Auto-generated catch block System.out.println("Inside exception"); e.printstacktrace(); } }
在第二种情况下,如果我在字符串对象上调用wait方法,我会得到异常.原因是因为字符串类对象str没有锁定当前对象.但我想知道str.wait()实际意味着什么?
public synchronized void test() { String str = "ABC"; try { System.out.println("Test1"); str.wait(); str.notifyAll(); System.out.println("Test2"); } catch (Exception e) { // Todo Auto-generated catch block System.out.println("Ins"); e.printstacktrace(); } }
控制台输出:
> Test1 java.lang.IllegalMonitorStateException
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。