• 多线程:线程池异步计算,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());
    }
    }
  • 相关阅读:
    Django的mode的分组查询和聚合查询和F查询和Q查询
    Django的models操作
    django复习--学校管理系统用到的知识点梳理
    django做form表单的数据验证
    一个不错的git资源站点
    php异常处理
    laravel自定义验证
    docker从容器中怎么访问宿主机
    laravel 之jwt认证使用详解
    laravel更改默认的登录密码加密方式
  • 原文地址:https://www.cnblogs.com/nbkls/p/12773597.html
Copyright © 2020-2023  润新知