Android线程池中的任务取消

时间:2021-12-19 17:00:44

============问题描述============


  ExecutorService pool = Executors.newFixedThreadPool(2); 
  //创建实现了Runnable接口对象,Thread对象当然也实现了Runnable接口 
  Thread t1 = new MyThread(); 
  Thread t2 = new MyThread(); 
  Thread t3 = new MyThread(); 
  Thread t4 = new MyThread(); 
  Thread t5 = new MyThread(); 
  //将线程放入池中进行执行 
  pool.execute(t1); 
  pool.execute(t2); 
  pool.execute(t3); 
  pool.execute(t4); 
  pool.execute(t5); 


上面创建了一个固定为2个线程的线程池,在某一时刻有没有办法判断t1、t2、t3、t4、t5是正在排队等待,还是已经在执行,因为我想将正在排队等待的任务取消掉,免得浪费资源
注:我用的就是这篇文章中的第一种方法http://blog.csdn.net/lyf_007217/article/details/8542238

============解决方案1============


 java.util.concurrent.ExecutorService;
 java.util.concurrent.Executors;
看看这两个包里面的api

============解决方案2============


IntentService提供一个工作者线程队列。

============解决方案3============


要想取消,就实现Callable接口,然后调用pool.submit()方法,返回 futrue对象,可以用 future对象来获取线程的状态。

这些 都是 J U C 里面的东西 。
源码分析见:
http://blog.csdn.net/windsunmoon/article/details/36903901