花公子丶 2016-08-12 08:29 采纳率: 50%
浏览 1048
已结题

关于Java线程的isInterrupted方法问题

我调用interrupt方法中断线程后,isInterrupted仍然为false。看代码第二个注释处

 public class InterruptThread
{
    public static void main(String[] args) {

        Mythread mythread= new Mythread();
        mythread.start();
        try {
            Thread.sleep(10000);//主线程休眠十秒,让子线程执行十秒,然后中断mythread子线程
            mythread.interrupt();
            Thread.sleep(3000);
            //明明调用了mythread.interrupt(),下面这句却还是false,这是为何?
            System.out.println("线程是否已经中断:"+mythread.isInterrupted());
            System.out.println("线程是否已经中断:"+mythread.interrupted());
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
class Mythread extends Thread{
    @Override
    public void run(){
        try {
            while(true){
                interruptableMethod();
            }
        } 
        catch (InterruptedException e) {
            System.out.println(Thread.currentThread().getName()+"线程中断了");
        }
    }

    public void interruptableMethod() throws InterruptedException{
        System.out.println("方法开始执行");
        sleep(2000);
        System.out.println("方法结束");
    }
}

  • 写回答

3条回答 默认 最新

  • 刘兆贤 博客专家认证 2016-08-24 03:32
    关注

    interrupt不一样能成功,而且thread目前也不建议,最好在线程中加入volatile变量来控制关闭,最次可以使用wait方法。

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算