我在解析文件的时候 用到了 线程池
 
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个 并发执行 多的排队
 而我这个 好像没有排队。
  谢谢大家 告诉下 

解决方案 »

  1.   

    1、线程池嘛,这个线程是可以重用的;
    2、Executors.newFixedThreadPool()里面是有任务队列的;
    3、检查一下数据,看看是不是数据导致的问题。
      

  2.   

    ExecutorService 这个是线程池,最多4条线程运行
    pool-1-thread-1 - 解析文件F:\20110127\20110127\导出数据\10导出数据.txt  运行完了
    空闲下来的线程当然是运行别的任务
      

  3.   

    你io是公用的吗? 是不是每个线程都启动一个io? 多线程对io没意思 因为就一个cpu 
      

  4.   

    是不是有异常试一下这样
    Future future = exec.submit(anathread);
    future.get();
    看看有没抛出
    CancellationException - 如果计算被取消 
    ExecutionException - 如果计算抛出异常 
    InterruptedException - 如果当前的线程在等待时被中断
      

  5.   

    线程创建后,
    到底哪个先执行由操作系统调试的
    jvm已经管不了了
    不是说先创建的线程就一定先执行