我在解析文件的时候 用到了 线程池
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个 并发执行 多的排队
而我这个 好像没有排队。
谢谢大家 告诉下
解决方案 »
- 关于JComponent一个问题
- 漫谈equals方法(欢迎讨论)
- 紧急询问,关于JscrollBar中滑块和箭头按钮的更改
- 再问个小白问题..谁能给我解释下堆内存和盏内存..最好可以浅显点的解释.
- report分页时,打印预览时为什么第二页的内容会在第一页显示?
- c++转换成java都要注意哪些?基本类型的格式要注意什么
- ====》菜鸟问问题罗:non-static method this cannot be referenced from a static context
- 大部分的程序都是模块化的,只需要知道方法和调用对象,那么在程序学习中,学习那些基本的数据算法有意义吗?
- 问个简单问题:请求熟手:如何确定Web应用的物理存放目录?
- 奇怪呀,为什么SUN的那个串口通信COMM API的串口通信参数只有4个?
- 请教时间跟踪
- 急!!!急!!!哪里有汤阳光讲的itcastbbs资料????
2、Executors.newFixedThreadPool()里面是有任务队列的;
3、检查一下数据,看看是不是数据导致的问题。
pool-1-thread-1 - 解析文件F:\20110127\20110127\导出数据\10导出数据.txt 运行完了
空闲下来的线程当然是运行别的任务
Future future = exec.submit(anathread);
future.get();
看看有没抛出
CancellationException - 如果计算被取消
ExecutionException - 如果计算抛出异常
InterruptedException - 如果当前的线程在等待时被中断
到底哪个先执行由操作系统调试的
jvm已经管不了了
不是说先创建的线程就一定先执行