问答详情
源自:3-3 Java线程停止广为流传的错误方法---interrupt方法

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

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("线程结束");
		}
}


提问者:snake先森 2015-04-06 16:03

个回答

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

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

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

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

    Thread.interrupted()

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

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

    因为你定义的名字是WE