但它提供了中断Interruption机制,这是一种协作机制,可以使一个线程终止还有一个线程的当前工作。
boolean isInterrupted() 測试线程是否已经中断。
InterruptedException异常 程序应该对线程中断作出恰当的响应。 // 1 Thread thread = new Thread("interrupt test") { public void run() { for (;;) { doXXX(); if (Thread.interrupted()) { break; } } } }; thread.start(); // 2 Thread thread = new Thread("interrupt test") { public void run() { for (;;) { try { doXXX(); } catch (InterruptedException e) { break; } catch (Exception e) { // handle Exception } } } }; thread.start(); // 3 public void foo() throws InterruptedException { if (Thread.interrupted()) { throw new InterruptedException(); } } 4. 使用Future退出方法 boolean cancel(boolean mayInterruptIfRunning) 试图取消对此任务的运行。 boolean isCancelled() 假设在任务正常完毕前将其取消,则返回 true。 *. 处理不可中断的堵塞 *. 採用newTaskFor来封装费标准的取消假设已经关闭,则调用没有其它作用。
-- 安全关闭方式。 List<Runnable> shutdownNow() 试图停止全部正在运行的活动任务,暂停处理正在等待的任务。并返回等待运行的任务列表。 无法保证可以停止正在处理的活动运行任务。可是会尽力尝试。比如,通过 Thread.interrupt() 来取消典型的实现。所以不论什么任务无法响应中断都可能永远无法终止。 -- shutdownNow方法的局限性,强制关闭方式。 boolean isShutdown() boolean isShutdown()假设此运行程序已关闭。则返回 true。 3. “毒丸”对象 仅仅有在生产者消费者的数量都已知的情况下,才干够使用“毒丸”对象。 三、处理非正常的线程终止 Thread.UncaughtExceptionHandler全局的捕获的异常处理。通常在应用中用于异常的统计,收集到这些统计后能够相应用进行异常修复。
2. 守护线程 希望创建一个线程来运行一些辅助工作。但又不希望这个线程阻碍JVM的关闭。能够使用守护线程。 3. 终结器 避免使用终结器finalize
转载于:https://www.cnblogs.com/bhlsheji/p/5127252.html
相关资源:数据结构—成绩单生成器