老师,我的代码为什么停不下来啊??

来源:3-3 Java线程停止广为流传的错误方法---interrupt方法

snake先森

2015-04-06 16:03

public class WrongExit extends Thread{
	public void run(){
		while(!this.isInterrupted()){
			System.out.println("Thread is continuing");
			long time = System.currentTimeMillis();
			while((System.currentTimeMillis()-time<1000)){
			}
		}
	}
	public static void main(String[] args){
		WrongExit WE = new WrongExit();
		System.out.println("----------线程开始---------");
		WE.start();
		try {
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		System.out.println("********3秒后终止线程********");
		Thread.interrupted();
		try {
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		System.out.println("线程结束");
		}
}


写回答 关注

3回答

  • Arthur
    2015-04-08 06:58:39

    用WE.interrupt()。 Thread.interrupted()错了。

    Jimmy 回复初级学习号

    public static boolean interrupted():测试当前线程是否已经被中断。该方法会清除线程的'中断状态'。 具体解释可以查阅API文档

    2016-01-30 15:50:09

    共 2 条回复 >

  • 莫子轩
    2015-12-29 00:26:00

    变量首写字母 建议小写 驼峰式命名  用你的变量去interrupt,

    Thread.interrupted()

    进程的interrupt状态被清除(cleard)而非被设置(set)。

  • FishYu
    2015-11-15 21:02:34

    因为你定义的名字是WE

深入浅出Java多线程

带你一起深入浅出多线程,掌握基础,展望进阶路线

186088 学习 · 464 问题

查看课程

相似问题