有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案