zoukankan      html  css  js  c++  java
  • Java多线程编程(二)

    在 Java多线程编程(一) 中的多线程并没有返回值,本文将介绍带返回值的多线程。

    要想有返回值,则需要实现新的接口Callable而不再是Runnable接口,实现的方法也改为call()方法,执行器也不再是调用execute(),而是submit()

    【程序实例】

     1 public class TaskWithResult implements Callable<String> {
     2 
     3     private int id;
     4 
     5     public TaskWithResult(int id) {
     6         this.id = id;
     7     }
     8 
     9     @Override
    10     public String call() throws Exception {
    11         return "result of TaskWithResult " + id + " : sum() = " + Sum(id);
    12     }
    13 
    14     private int Sum(int id) {
    15         return (id * (id + 1)) / 2;
    16     }
    17 
    18 }
     1 public class Main {
     2 
     3     public static void main(String[] args) {
     4         ExecutorService exec = Executors.newCachedThreadPool();
     5         ArrayList<Future<String>> results = new ArrayList<Future<String>>();
     6         for (int i = 0; i < 10; i++)
     7             results.add(exec.submit(new TaskWithResult(i)));
     8         for (Future<String> fs : results)
     9             try {
    10                 System.out.println(fs.get());
    11             } catch (InterruptedException e) {
    12                 System.out.println(e);
    13                 return;
    14             } catch (ExecutionException e) {
    15                 System.out.println(e);
    16             } finally {
    17                 exec.shutdown();
    18             }
    19     }
    20 
    21 }

    【运行结果】

     1 result of TaskWithResult 0 : sum() = 0
     2 result of TaskWithResult 1 : sum() = 1
     3 result of TaskWithResult 2 : sum() = 3
     4 result of TaskWithResult 3 : sum() = 6
     5 result of TaskWithResult 4 : sum() = 10
     6 result of TaskWithResult 5 : sum() = 15
     7 result of TaskWithResult 6 : sum() = 21
     8 result of TaskWithResult 7 : sum() = 28
     9 result of TaskWithResult 8 : sum() = 36
    10 result of TaskWithResult 9 : sum() = 45
  • 相关阅读:
    CSS 文档流
    索引器实现
    HTTP请求报文和响应报文的内容
    【面试题42】翻转单词顺序VS左旋转字符串
    手机连接虚拟机服务器,架构微信内网开发环境
    thrift的使用介绍
    hessian 在PHP中的使用介绍
    PHP simplexml_load_string() 函数
    微信公共平台开发
    使用缓存Memcache存储更新微信access token
  • 原文地址:https://www.cnblogs.com/acode/p/5787093.html
Copyright © 2011-2022 走看看