停止正在执行的线程

来源:互联网 发布:ps美工 编辑:程序博客网 时间:2024/05/17 17:57

一:直接利用线程中给出的方法来终止现场--该方法直接把线程停止

public class ThreadStop1 {public static void main(String[] args) {stratrun();}public static void stratrun(){final ExecutorService pool = Executors.newSingleThreadExecutor(); pool.submit(new Runnable() {@Overridepublic void run() {for(int i = 0;i<1000;i++){System.out.println(Thread.currentThread().getName()+"i:"+i);if(i==20){List<Runnable> p = pool.shutdownNow();System.out.println("pool has bean closed!!!!"+p.get(0).toString());}}}});}}

二:采用interrupt的特性来结束该正在运行的线程

<pre name="code" class="java">public class TestThreadStop {public static void main(String[] args) {stratrun();}public static void stratrun(){ExecutorService pool = Executors.newCachedThreadPool(); Future<?> future = pool.submit(new Runnable() {@Overridepublic void run() {while(true){boolean interrupted = Thread.interrupted();System.out.println(Thread.currentThread().getName()+"i:..."+interrupted);if(interrupted){System.out.println("DONE!");return;}}}});try {Thread.sleep(1000);future.cancel(true);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("==========="+Thread.currentThread().getName()+"===========");}}


0 0