• 技术文章 >Java >java教程

    java中wait调用中断怎么解决

    WBOYWBOY2023-04-25 10:34:06转载26

    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调用中断怎么解决的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:亿速云,如有侵犯,请联系admin@php.cn删除
    专题推荐:Java wait
    上一篇:java如何通过字节流实现文件的拷贝 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • Java二维数组拷贝的效率比较分析实例• Java类加载器的使用及分类• 怎么在Java中终止一个线程• 如何使用Java启动和关闭Tomcat服务器?• 如何设计优雅的 Java 异常?
    1/1

    PHP中文网