ExecutorService 多线程
ExecutorService 使得在java中对多线程的处理变得更加简单,优雅
ExecutorService 主要用到两个方法execute方法,获取不到返回结果submit方法可以制定Future 从而获取到返回结果,下面分别做说明:
1、submit方法:
Future是每个线程的返回结果,结合Callable使用,这样可以拿到所有线程的返回结果。
还是以之前的例子,获取两个文本内容并且拼接。
1 public static void main(String[] args) { 2 String filNames[] = {"d:\\a.txt","d:\\b.txt"}; 3 ExecutorService threadPool = Executors.newFixedThreadPool(2); 4 //每个线程返回一个Future对象里面是线程返回结果 5 List<Future<String>> futures = new ArrayList<Future<String>>(); 6 for(final String fileName : filNames){ 7 futures.add(threadPool.submit(new Callable<String>() { 8 @Override 9 public String call() throws Exception { 10 File file = new File(fileName); 11 InputStreamReader in = new InputStreamReader(new FileInputStream(file),"gbk"); 12 BufferedReader br = new BufferedReader(in); 13 String str= br.readLine(); 14 return str; 15 } 16 })); 17 } 18 threadPool.shutdown(); 19 //处理每个线程的返回结果 20 for(Future<String> future : futures){ 21 try { 22 System.out.println(future.get()); 23 } catch (InterruptedException | ExecutionException e) { 24 e.printStackTrace(); 25 } 26 } 27 }
2、execute方法:
execute方法不支持返回结果,因为参数是Runnable,拿不到线程的返回结果。
posted on 2017-06-15 17:28 FlyHeLanMan 阅读(1110) 评论(0) 编辑 收藏 举报