我在ThreadPoolExecutor中运行多个任务。我初始化它如下:跟踪提交给ThreadPoolExecutor的任务
private VideoExportExecutor executor;
private BlockingQueue<Runnable> jobQueue;
public void initialiseVideoProcessor()
{
jobQueue = new LinkedBlockingQueue<Runnable>();
executor = new VideoExportExecutor(1, 1, Long.MAX_VALUE, TimeUnit.SECONDS, jobQueue);
}
我已经作出了自己的实现可运行(VideoExportThread
),其中包含一个getProgress()
方法来跟踪提交任务的进度。我提交如下的实例:
executor.submit(new VideoExportThread(gcmPath));
我在查询当前/挂起线程的executor/blockingQueue后。我试图使用jobQueue.toArray()
并重写执行器方法beforeExecute(Thread t, Runnable r)
,但是在这两种情况下,返回的runnable都是FutureTask类型,它不包含太多数据。有没有办法让我使用它来检索我的原始VideoExportThread
实例,以确定哪些正在运行并查询其进度?
谢谢
这就是我最终会做的。我认为直接查询执行者/阻塞列表会更清晰,但是这会完成这项工作。谢谢。 – tishu 2013-03-11 14:51:21