java中wait调用中断的解决方法
这篇文章主要介绍java中wait调用中断的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联公司主要从事网站设计、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务湘桥,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
Java的优点是什么
1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布性,Java是面向网络的语言;4. 鲁棒性,java提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。;5. 安全性,用于网络、分布环境下的Java必须防止病毒的入侵。6. 体系结构中立,只要安装了Java运行时系统,就可在任意处理器上运行。7. 可移植性,Java可以方便地移植到网络上的不同机器。8.解释执行,Java解释器直接对Java字节码进行解释执行。
java中的线程在数量上,可以说是比较多的。所以为了能够使线程有序的进行,我们通常会用到wait方法,来让部分线程变为等待的状态。不过wait方法一旦被中断也是非常麻烦的,将会出现不断调用的情况。下面我们就这种问题进行分析,然后带来具体的实例解决办法。
1、解决办法
(1)使用java线程时,将经常使用wait方法,并且如果在调用wait方法时中断了,jvm将捕获该中断,并持续调用wait指令。
(2)此时即使使用interrupt发送法中断,也不会发生任何效果。
(3)wait方法需要进行一些封装,捕获异常,然后停止执行该异常。
2、实例
public static void wait(Object obj) { boolean interrupted = true; while (interrupted) { interrupted = false; try { obj.wait(); } catch (InterruptedException e) { interrupted = true; } } } public static void wait(Object obj, int timeout) { boolean interrupted = true; long startTime = System.currentTimeMillis(); int sleepTimeout = timeout; while (interrupted) { interrupted = false; try { obj.wait(sleepTimeout); } catch (InterruptedException e) { interrupted = true; long now = System.currentTimeMillis(); sleepTimeout -= now - startTime; startTime = now; if (sleepTimeout < 0) { interrupted = false; } } } }
以上是“java中wait调用中断的解决方法”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
标题名称:java中wait调用中断的解决方法
URL链接:http://pwwzsj.com/article/poppip.html