java如何使用可调用接口执行任务
创建一个多线程系统,分别为每个文件确定三个文本文件中标点符号的数量。对于每个文件,如果可能的话,选择自己创建线程的方式(使用Runnable、Callable、Executor和ExecutorService接口)。如何通过Callable完成
public class Dispatcher {
public static void main(String[] args){
Thread thread = new Thread(new SymbolCounting());
Runnable runnable = ()-> System.out.println(TextHelper.symbolCounting(new File("text2.txt")));
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.execute(thread);
executorService.execute(runnable);
executorService.shutdown();
}
}
class SymbolCounting implements Runnable{
@Override
public void run() {
final int i = TextHelper.symbolCounting(new File("text.txt"));
System.out.println(i);
}
}
class SymbolCounting2 implements Callable<Integer>{
@Override
public Integer call() {
final int i = TextHelper.symbolCounting(new File("text2.txt"));
return i;
}
}
class TextHelper{
public static int symbolCounting(File file){
int countSymbol = 0;
try (Scanner sc = new Scanner(file).useDelimiter("[^\\w\\s]")) {
while (sc.hasNext()) {
sc.next();
countSymbol++;
}
} catch (Exception e) {
e.printStackTrace();
}
return countSymbol - 1;
}
}
# 1 楼答案
我不能真正理解这个问题。 但这里有一个很好的Callable示例: https://howtodoinjava.com/java/multi-threading/java-callable-future-example/ 如果需要,请提供更多信息