zoukankan      html  css  js  c++  java
  • 多线程:线程池异步计算,2个线程,1个计算10的阶乘,一个计算20的阶乘并返回

    Callable接口:与Runnable接口功能相似,用来指定线程的任务。其中的call()方法,用来返回线程任务执行完毕后的结果,call方法可抛出异常。

    ExecutorService:线程池类

    <T> Future<T> submit(Callable<T> task):获取线程池中的某一个线程对象,并执行线程中的call()方法

    Future接口:用来记录线程任务执行完毕后产生的结果。线程池创建与使用

    使用线程池中线程对象的步骤:

    1创建线程池对象

    2创建Callable接口子类对象

    3提交Callable接口子类对象

    4关闭线程池

    代码展示:

    import java.util.concurrent.Callable;

    public class MyCallable implements Callable<Long> {
    private int num;

    public MyCallable(int num) {
    this.num = num;
    }

    public Long call() throws Exception {
    long count=1;
    for (int i=1;i<=num;i++){
    count=count*i;
    }
    return count;
    }
    }
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Future;

    public class Demo03 {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
    //创建线程任务对象
    MyCallable mc1=new MyCallable(10);
    MyCallable mc2=new MyCallable(20);
    //获取线程池
    ExecutorService es= Executors.newFixedThreadPool(2);
    //执行线程任务
    Future f1=es.submit(mc1);
    Future f2=es.submit(mc2);
    System.out.println(f1.get()+"..."+f2.get());
    }
    }
  • 相关阅读:
    ios中文件夹文件的创建和删除
    iOS沙盒文件目录介绍
    ios中多线程GCD NSOperation NSThread 相关的操作解析
    iOS中如何使定时器NSTimer不受UIScrollView滑动所影响
    iOS如何实现语音播报及后台播放
    iOS中字符串转float类型失真的解决办法
    iOS图文混排的几种方式
    iOS程序内实现版本更新
    iOS中跑马灯效果小结
    AppDelegate
  • 原文地址:https://www.cnblogs.com/nbkls/p/12773597.html
Copyright © 2011-2022 走看看