============问题描述============
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