您确实想使用ExecutorService而不是单个线程,它更干净,性能可能更高,并且使您以后可以更轻松地进行更改(线程计数,线程名称等):
ExecutorService pool = Executors.newFixedThreadPool(10);for (String name : fileNames) { pool.submit(new DownloadTask(name, toPath));}pool.shutdown();pool.awaitTermination(Long.MAX_VALUE, TimeUnit.MILLISECONDS);// all tasks have now finished (unless an exception is thrown above)在班上其他地方定义实际的工作马
DownloadTask:
private static class DownloadTask implements Runnable { private String name; private final String toPath; public DownloadTask(String name, String toPath) { this.name = name; this.toPath = toPath; } @Override public void run() { // surround with try-catch if downloadFile() throws something downloadFile(name, toPath); }}该
shutdown()方法的名称非常混乱,因为它“将允许先前提交的任务在终止之前执行”。
awaitTermination()声明
InterruptedException您需要处理。



