我有这个帖子
public class ThreadA extends Thread {
private final String lala = "lala";
@Override
public void run() {
Scanner scanner = new Scanner(System.in);
String value = scanner.next();
while (!value.equals("stop") && !isInterrupted()) {
value = scanner.next();
}
interrupt();
System.out.println("exit");
}
public String getMe() {
return lala;
}
}
我想知道为什么我总是可以访问方法getMe(),即使Thread已经被中断了。
为什么会这样?并且这总是可能的,即使在几天之后或者垃圾收集器会删除那个对象吗?
答案 0 :(得分:2)
interrupt()只是设置一个特殊标志。在你的情况下,它没有做任何特别的事情。
我想知道为什么即使Thread已经被中断,我仍然可以访问方法getMe()。
要做到这一点,你必须有一个对ThreadA对象的引用,当你持有该引用时,你总是可以调用它。
总是可能的,即使在几天后,垃圾收集器会删除该对象
是的,当线程没有运行时,它只是一个普通的对象,只要你持有对它的引用它就会存在。