本帖最后由 Chelsea_Lampard 于 2013-5-11 01:20 编辑
- int ThreadCount = 20;
- ExecutorService service = Executors.newFixedThreadPool(ThreadCount);
- final ReentrantLock lock = new ReentrantLock();
- for (int j = start; j < n; j++) {
- Future result = service.submit(new Handler(urls[j], j, n, lock));
- if (j > 0 && j % ThreadCount == 0) {
- while (true) {
- // 如果有任务完成, 处理下一个任务
- if (result.isDone()) {
- break;
- }
- }
- }
- }
复制代码我要实现的功能是; 创建一个线程池来处理任务 如果线程池里面没有一个任务完成时候, 则不接受新任务 反之, 接受新任务。 问题1:判断线程池里面是否有任务完成; 我自己写的 while(true) ... 检查是否有任务完成,感觉不是很理想, 有没有好的方法来检查是否有任务完成? 问题2: - service.shutdown();
- if (!service.awaitTermination(60, TimeUnit.SECONDS)) {
- service.shutdownNow();
- // 如果这里关闭数据库,总是会出现任务没有全部完成,就给关闭了,导致数据无法写入到数据库
- //Db.getInstance().close();
- }
复制代码 怎样判断所有任务是否都完成?
|