我在“main”中有一个带有“myClass”的类:

 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”成员,我需要在程序结尾处获得它(所有线程终止之后)
为此,我创建了一个方法“getRes”,该方法返回“_res”,但问题是在线程终止后,我无法访问该类。
有没有办法保持从“主”到每个线程中创建的实例的引用?

最佳答案

您可以这样做:

 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();
 }

10-08 18:28