2024年1月31日发(作者:)

public class MyRunnableC implements Runnable { private String name;

public MyRunnableC(String name) { super(); = name; } @Override public void run() { try { while(true) { if(tThread().isInterrupted()==true) { throw new InterruptedException(); } n(name+" run start "+ tTimeMillis()); (1); } } catch (InterruptedException e) { tackTrace(); n("线程中断了"); }

}}** public static void main(String[] args) { ScheduledThreadPoolExecutor pool = new ScheduledThreadPoolExecutor(1); Runnable a = new MyRunnableC("A"); ScheduledFuture fua = le(a, 0, S); BlockingQueue queue = ue(); n("queue size "+()); try { (2); } catch (InterruptedException e) { // TODO Auto-generated catch block tackTrace(); } n((true)); queue = ue(); n("queue size "+()); n("main end"); }

测试结果A run start 16queue size 0A run start 16truequeue size 0main uptedException: sleep interruptedat (Native Method)at (Unknown Source)at (Unknown Source)at (:22)at (UnknownSource)(UnknownSource)201(UnknownSource)(Unknown Source)at ker(Unknown Source)at PoolExecutor$(Unknown Source)at (Unknown Source)线程中断了取消任务并且删除队列中的任务public static void main(String[] args) { ScheduledThreadPoolExecutor pool = new ScheduledThreadPoolExecutor(1); Runnable a = new MyRunnableC("A"); ScheduledFuture fua = le(a, 1, S); oveOnCancelPolicy(true); n((true)); BlockingQueue queue = ue(); Iterator it = or(); while (t()) { Runnable h = (); n("队列中的 " + h); } n("main end"); }测试结果truemain end