zoukankan      html  css  js  c++  java
  • java线程的方便调用方式

    一直用java的线程,总感觉写起来阅读或书写起来不是方便,改进之。

     

    实现类:

    public class Task<R> {

    private ExecutorService executorService = Executors.newCachedThreadPool();
    Future<R> future;
    private Supplier<R> fuc;

    public boolean cannel() {
    return future.cancel(true);
    }

    public Task(Supplier<R> fuc) {
    this.fuc = fuc;
    }

    class InnerTask implements Callable<R> {
    @Override
    public R call() {
    return fuc.get();
    }
    }

    public void start() {
    this.future = executorService.submit(new InnerTask());
    executorService.shutdown();
    }

    public R result() throws ExecutionException, InterruptedException {
    if (!future.isCancelled()) {
    return future.get();
    }
    throw new InterruptedException();
    }
    使用示例:

    //一个超时的计算
    public Integer sum(List<Integer> list) {
    Integer sum = 0;
    for (Integer integer : list) {
    sum += integer;
    }
    return sum;
    }

    public String getClassName() {
    return getClass().getName();
    }


    @Test
    public void testTask1() throws ExecutionException, InterruptedException {
    List<Integer> list = Arrays.asList(1, 2, 3);
    Task<Integer> task = new Task(() -> {
    Integer sum = 0;
    for (Integer integer : list) {
    sum += integer;
    }
    return sum;
    });
    task.start();
    //这里继续书写其它业务逻缉
    String className = getClassName();
    //计算结果
    System.out.println(className + "运行结果是:" + String.valueOf(task.result()));

    }


    @Test
    public void testTask2() throws ExecutionException, InterruptedException {
    List<Integer> l = Arrays.asList(1, 2, 3);
    Task<Integer> task = new Task(() -> {
    return new BIPayTest().sum(l);
    });
    task.start();
    //这里继续书写其它业务逻缉
    String className = getClassName();
    //计算结果
    System.out.println(className + "运行结果是:" + String.valueOf(task.result()));

    }
      

  • 相关阅读:
    python 软件目录规范
    生成器与迭代器
    第四周-第08章节-Python3.5-装饰器
    第三周-第18章节-Python3.5-函数式编程与函数不同
    第三周-第17章节-Python3.5-递归
    第三周-第16章节-Python3.5-局部变量与全局变量作用域
    第三周-第14章节-Python3.5-函数式编程
    JAVA发红包案例
    JAVA字符串
    JAVA关于字符串&&字符数组处理的小题目
  • 原文地址:https://www.cnblogs.com/laogu2/p/11189753.html
Copyright © 2011-2022 走看看