1

我有一个类,“myClass”,在“main”中有这个代码:

 ExecutorService service;  
 List<Future<Integer>> tasks = new ArrayList<Future<Integer>>();  
 service = Executors.newFixedThreadPool(numOfThreads);

然后我启动每个线程:

 for (int i = numOfThreads; i > 0; --i) {   
     tasks.add(service.submit(new StringSearcher(file, offset,threadChankSize, args[1],buffSize)));          
 }  
 for (Future<Integer> task : tasks) {         
    result += task.get();         
 }

该类有“_res”成员,我需要在程序结束时获取(在所有线程终止之后)为了做到这一点,我创建了一个返回“_res”的方法“getRes”,但问题是我没有在线程终止后可以访问该类。有没有办法保持“main”对每个线程中创建的实例的引用?

4

1 回答 1

4

你可以这样做:

 List<StringSearcher> searchers = new ArrayList<StringSearcher>();

 for (int i = numOfThreads; i > 0; --i) {   
     StringSearcher task = new StringSearcher(file, offset,threadChankSize, args[1],buffSize);
     searchers.add(task);
     tasks.add(service.submit(task));          
 }  
 for (Future<Integer> task : tasks) {         
    result += task.get();         
 }
 for (StringSearcher searcher : searchers){
    /*do stuff with*/ searcher.getRes();
 }
于 2012-04-17T20:46:56.363 回答