Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当线程被中断时,继续休眠剩余时间_Java_Multithreading_Sleep - Fatal编程技术网

Java 当线程被中断时,继续休眠剩余时间

Java 当线程被中断时,继续休眠剩余时间,java,multithreading,sleep,Java,Multithreading,Sleep,我有网络要求,要求我空闲发送请求2秒 requester = new Thread(){ @Override public void run(){ buildRequest(); Thread.sleep(requestDelay); } catch( InterruptedException e){ // keep idl

我有网络要求,要求我空闲发送请求2秒

requester = new Thread(){
        @Override
        public void run(){
                  buildRequest();
                  Thread.sleep(requestDelay);
                } catch( InterruptedException e){
                   // keep idle for the remaining time still
                   // interrupted at 1s need to sleep 1 second more
                   e.printStackTrace();
                }
                sendRequest();
            }
        }

在循环消耗CPU的情况下,是否可以在剩余时间内保持睡眠?如果是最好的方法?

如果我理解正确,您希望在执行
sendRequest
之前以不确定延迟的方式处理
中断异常。好的,因为当线程上有东西调用
interrupt()
时,就会发生
InterruptedException
,所以catch块不会被执行,所以您不必担心


你的方法不太正确,被动的方法会更好。即使是基本的也更好

如果我理解正确,您希望在执行
sendRequest
之前以不确定延迟的方式处理
中断异常。好的,因为当线程上有东西调用
interrupt()
时,就会发生
InterruptedException
,所以catch块不会被执行,所以您不必担心


你的方法不太正确,被动的方法会更好。即使是基本的也更好

当然有可能,但最好不要睡觉。即使在几分钟后唤醒请求,也可以使用一种反应模式来触发一个请求,这样你就不会“浪费”线程。中断不是偶然发生的。如果您的线程被中断,则有人明确要求它停止正在执行的操作并优雅地退出。你确定要忽略这个吗?番石榴有。基本上,它只是记录线程被中断的事实,清除标志,然后返回睡眠状态。一旦全部时间结束,如果它被中断,它就会重新中断。我知道从一开始睡觉就不是个好主意。但是考虑到这个选项,在剩余的时间里,在catch范围内是否有另一个睡眠是合适的呢?当然有可能,但最好不要睡觉。即使在几分钟后唤醒请求,也可以使用一种反应模式来触发一个请求,这样你就不会“浪费”线程。中断不是偶然发生的。如果您的线程被中断,则有人明确要求它停止正在执行的操作并优雅地退出。你确定要忽略这个吗?番石榴有。基本上,它只是记录线程被中断的事实,清除标志,然后返回睡眠状态。一旦全部时间结束,如果它被中断,它就会重新中断。我知道从一开始睡觉就不是个好主意。但是考虑到这个选项,从剩余时间开始,在catch范围内是否还需要另一个睡眠?