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