java.lang.IllegalMonitorStateException 
违法的监控状态异常。当某个线程试图等待一个自己并不拥有的对象(O)的监控器或者通知其他线程等待该对象(O)的监控器时,抛出该异常。

例子:

//计算线程

//获取计算结果并输出

运行结果

Thread[Thread-1,5,main]等待计算结果。。。

Thread[Thread-2,5,main]等待计算结果。。。

Thread[Thread-3,5,main]等待计算结果。。。

Thread[Thread-4,5,main]等待计算结果。。。

Thread[Thread-5,5,main]等待计算结果。。。

Thread[Thread-5,5,main]计算结果为:45

Thread[Thread-4,5,main]计算结果为:45

Thread[Thread-3,5,main]计算结果为:45

Thread[Thread-2,5,main]计算结果为:45

Thread[Thread-1,5,main]计算结果为:45

Exception in thread "Thread-0" java.lang.IllegalMonitorStateException

at java.lang.Object.notifyAll(Native Method)

at com.intlgj.thread.Calculator.run(Calculator.java:15)

根据SCJP所要求的线程交互知识点需要从java.lang.Object的类的三个方法和以上的说法:

void notify() 
          唤醒在此对象监视器上等待的单个线程。 
 void notifyAll() 
          唤醒在此对象监视器上等待的所有线程。 
 void wait() 
          导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。
根据jdk的void notifyAll()的描述,“解除那些在该对象上调用wait()方法的线程的阻塞状态。该方法只能在同步方法或同步块内部调用。如果当前线程不是对象所得持有者,该方法抛出一个java.lang.IllegalMonitorStateException 异常”
所以我们现在就可以明确错误的原因了
      本文转自yjflinchong 51CTO博客,原文链接:http://blog.51cto.com/yjflinchong/1165083,如需转载请自行联系原作者

java.lang.IllegalMonitorStateException 异常出现原因相关推荐

  1. 错误记录一:线程通信时抛出Exception in thread “Thread-0” java.lang.IllegalMonitorStateException异常

    错误记录一:线程通信时抛出Exception in thread "Thread-0" java.lang.IllegalMonitorStateException异常 完整异常: ...

  2. java.lang.IllegalMonitorStateException

    转载自:https://blog.csdn.net/intlgj/article/details/6245226 java.lang.IllegalMonitorStateException 违法的监 ...

  3. java.lang.NullPointerException异常原因及解决

    java.lang.NullPointerException异常原因是因为创建了一个引用类型的变量却没有指向任何对象而又去通过这个引用类型变量加点的形式去访问非静态的方法及属性. 给出三种情况, 第一 ...

  4. java.lang.IllegalStateException异常原因和解决

    1.出现该异常场景 Iterator.remove() 迭代删除 引发 2.问题定位分析 1. Iterator.remove() 迭代删除 引发 重复 remove 导致出现该异常 场景示例 @Te ...

  5. java.lang.OutOfMemoryError​异常解决方法

    java.lang.OutOfmemoryError: PermGen Space 的错误,导致项目无法正常运行. 出现这个错误的原因,总结一下: PermGen Space指的是内存的永久保存区,该 ...

  6. java java.lang_Java之java.lang.IllegalMonitorStateException

    今天又中彩了, 原本很简单的多线程程序, 蓦然间冒了个"java.lang.IllegalMonitorStateException" , 杀了个措手不及. 一直纳闷, 为什么为什 ...

  7. Struts2中我所遇到的内存溢出(java.lang.OutOfMemoryError)异常错误介绍

    1.在我以前写得关于Struts2的文章中,有时候往往会报一些经常出现的错误,今天又出现了,所以特此来介绍一下,并如何解决这种错误. 2.在我们部署项目到Tomcat服务器后,开启Tomcat服务器, ...

  8. SpringBoot统一返回处理出现cannot be cast to java.lang.String异常

    SpringBoot统一返回处理出现cannot be cast to java.lang.String异常 一 问题出现背景: 二 解决方案 三 异常原因分析 原因: 源码详细分析: 正常返回: 返 ...

  9. 【问题解决】java.lang.IllegalStateException异常是什么问题?解决办法

    java.lang.IllegalStateException异常是什么问题?解决办法 Illegal State Exception 非法状态异常 Life cycle Exception 生命周期 ...

最新文章

  1. mysql触发器的简单写法
  2. bfs——练习demo2(20届周新杰提供)
  3. Pricing debug - update
  4. 如何用三元组表表示下列稀疏矩阵_盘一盘 Python 系列特别篇21之:SciPy 稀疏矩阵...
  5. 这些迹象表明公司即将裁员
  6. 表格数字乘以百分比怎么算_Excel输入多位数字之后有了“E”,用文本格式一步到位,恢复原状...
  7. linux分区磁盘大小,Linux对超大容量磁盘进行分区
  8. RabbitMQ ACK 机制的意义是什么?
  9. html元素拖动互换位置原理,HTML5 元素拖动 - 实现元素左右拖动, 或更改自身排序...
  10. FPGA学习笔记06——数电基础知识
  11. 微缩脚步趋缓 摩尔定律由于EUV微影技术延迟失去动力
  12. 16g电脑内存有什么好处_16G电脑运行内存可以达到什么样子。
  13. 为什么说优秀的管理都是自下而上的?
  14. Trading on Sentiment
  15. 机器学习 识别图片人物动作_一键学习人物识别说明
  16. 安卓证书库文件BKS制作
  17. 科研论文中的图片如何保证高清
  18. 深度学习相关基础理论
  19. python是一种语言吗-python语言是非开源语言吗
  20. 网站项目成功管理实践(刘振飞)

热门文章

  1. C++/C++11中std::string用法汇总
  2. 【linux】在CentOS7上更改端口号时报错:Job for sshd.service failed because the control process exited with error
  3. Qt 事件处理和事件过滤器的返回值总结
  4. matlab小波分析工具箱原理与应用_补充:频域特征值提取的MATLAB代码实现(小波分析)...
  5. mysql查询并设置高亮_Thinkphp3.2.3设置MySql主从读写分离后,简单调用主数据库查询
  6. c语言中二进制用什么字母表示方法,看C语言编码转换--------负数的二进制表示方法...
  7. c# redis hashid如何设置过期时间_Redis中Key过期策略amp;淘汰机制
  8. chrome 浏览器打开静态html 获取json文件失败 解决方法
  9. 读取CSV文件内容,将其转换成JSON字符串输出
  10. 后盾网php多少钱_复合排水网价格多少钱