编辑:我知道Thread.interrupt()的作用。
while (!Thread.currentThread().isInterrupted())
不会退出。 该应用程序创建一个{strong>连续读取 Thread
的{{1}}。 URL
被中断3秒后,不幸的是继续执行。
如何停止执行线程?
代码(Main.java,MyRunnable.java):
Thread
答案 0 :(得分:2)
基本上,您的MyRunnable
线程在睡眠期间被中断。 InterreuptedException
被抛出但被抓住。顺便说一句,赶上Exception
是一个坏习惯,您不应该这样做。
从javadoc中:“抛出此异常时,将清除当前线程的中断状态”。
因此,您的while循环将永远不会看到该标志。
答案 1 :(得分:1)
使用简单的Thread.sleep调用替换对sleepOneSec
方法的调用。在while
循环的外部 处捕获InterruptedException。这将导致循环自然退出:
try {
while (true) {
Thread.sleep(1000);
readFromUrl(url);
System.out.println("Read from " + website);
}
} catch (InterruptedException e) {
System.out.println("Script: Interrupted, exiting.");
}
答案 2 :(得分:0)
我删除了MyRunnable.sleepOneSec,您的代码开始工作。