我在解析文件的时候 用到了 线程池
ExecutorService exec = Executors.newFixedThreadPool(4);
for(int i = 0; i < files.length; i++){
AnaFileThread anathread = new AnaFileThread(files[i].getPath());
exec.submit(anathread);
}这个事我打印的日志
pool-1-thread-1 - 解析文件F:\20110127\20110127\导出数据\10导出数据.txt
pool-1-thread-4 - 解析文件F:\20110127\20110127\导出数据\1导出数据.txt
pool-1-thread-3 - 解析文件F:\20110127\20110127\导出数据\15导出数据.txt
pool-1-thread-4 - 解析文件F:\20110127\20110127\导出数据\21导出数据.txt
pool-1-thread-4 - 解析文件F:\20110127\20110127\导出数据\24导出数据.txt
pool-1-thread-3 - 解析文件F:\20110127\20110127\导出数据\4导出数据.txt
pool-1-thread-1 - 解析文件F:\20110127\20110127\导出数据\5导出数据.txt问题是 我thread-1 解析 10号文件 怎么在后面有趣解析 5导出数据.txt
导致 我的 10 号文件 最后没有被解析
求解
我只是想用到线程池 里面把线程没4个 并发执行 多的排队
而我这个 好像没有排队。
谢谢大家 告诉下
ExecutorService exec = Executors.newFixedThreadPool(4);
for(int i = 0; i < files.length; i++){
AnaFileThread anathread = new AnaFileThread(files[i].getPath());
exec.submit(anathread);
}这个事我打印的日志
pool-1-thread-1 - 解析文件F:\20110127\20110127\导出数据\10导出数据.txt
pool-1-thread-4 - 解析文件F:\20110127\20110127\导出数据\1导出数据.txt
pool-1-thread-3 - 解析文件F:\20110127\20110127\导出数据\15导出数据.txt
pool-1-thread-4 - 解析文件F:\20110127\20110127\导出数据\21导出数据.txt
pool-1-thread-4 - 解析文件F:\20110127\20110127\导出数据\24导出数据.txt
pool-1-thread-3 - 解析文件F:\20110127\20110127\导出数据\4导出数据.txt
pool-1-thread-1 - 解析文件F:\20110127\20110127\导出数据\5导出数据.txt问题是 我thread-1 解析 10号文件 怎么在后面有趣解析 5导出数据.txt
导致 我的 10 号文件 最后没有被解析
求解
我只是想用到线程池 里面把线程没4个 并发执行 多的排队
而我这个 好像没有排队。
谢谢大家 告诉下
2、Executors.newFixedThreadPool()里面是有任务队列的;
3、检查一下数据,看看是不是数据导致的问题。
pool-1-thread-1 - 解析文件F:\20110127\20110127\导出数据\10导出数据.txt 运行完了
空闲下来的线程当然是运行别的任务
Future future = exec.submit(anathread);
future.get();
看看有没抛出
CancellationException - 如果计算被取消
ExecutionException - 如果计算抛出异常
InterruptedException - 如果当前的线程在等待时被中断
到底哪个先执行由操作系统调试的
jvm已经管不了了
不是说先创建的线程就一定先执行