Dúvida java callable

Oi pessoal, alguém poderia me ajudar num probleminha?
O caso é o seguinte preciso fazer um programa em java que faça um número x cópias de um arquivo usando threads. (Callable)
Eu fiz o seguinte código mas não sei se a lógica está correta e ainda não achei uma maneira de fazer ele criar as cópias.

   class CopiaArquivo implements Callable<File>{
    File src;
    File dst;
    void copy(File src, File dst) throws IOException {
 this.src = src;
        this.dst = dst;
    }
    @Override
    public File call() throws Exception {
        return result();
    }
    private File result(){
        try{
            InputStream in = new FileInputStream(src);
            OutputStream out = new FileOutputStream(dst);  // Transferindo bytes de entrada para saída
            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0) {
 out.write(buf, 0, len);
            }
            in.close();
            out.close();
        }
        catch(Exception ee){
            System.out.println("Erro ao copiar arquivo");
        }
        return dst;
    }
}
public class CopiaArq {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args){
        // TODO code application logic here
        try{
            FileOutputStream arquivo = new FileOutputStream("arquivo.txt");
            PrintWriter pr = new PrintWriter(arquivo);
            pr.println("Hello World!!");
            pr.close();
            arquivo.close();
        }
        catch(Exception e){
            System.out.println("Erro ao escrever arquivo!!!");
        }
        ExecutorService e = Executors.newFixedThreadPool(2);
        ExecutorCompletionService<File> completionService = new ExecutorCompletionService<>(e);
        ArrayList<Future<File>> futures = new ArrayList<>();
        futures.add(e.submit(new CopiaArquivo()));
    }
}