【发布时间】:2015-02-20 12:20:03
【问题描述】:
我研究java线程,一时看不懂: 在以下代码中
public class ThreadsTest {
public static void main(String[] args) throws Exception{
ExtendsThread extendsThread = new ExtendsThread();
Thread et = new Thread(extendsThread);
et.start();
Thread.sleep(1500);
ir.interrupt();
}
}
public class ExtendsThread extends Thread {
private Thread currentThread = Thread.currentThread();
public void run() {
while (!currentThread .isInterrupted()) {}
System.out.println("ExtendsThread " + currentThread().isInterrupted());
}
}
线程不会停止。
但是如果在 ExtendsThread 类中我检查while (!Thread.currentThread().isInterrupted()) 线程停止。
为什么private Thread currentThread = Thread.currentThread(); 不引用当前线程?
【问题讨论】:
-
这段代码能编译吗?
ir是什么? -
@piotrek,
ir可能是一个错字,应该是et。 -
对不起,我的错……应该是“et”……
-
您的
ExtendsThread类永远不会用作Thread(即,您永远不会调用它的start()方法)。您仅将其用作Runnable。你不妨写class ExtendsThread implements Runnable,除此之外,你可能还想更改它的名称。
标签: java multithreading