zoukankan      html  css  js  c++  java
  • JAVA 多线程 Callable 与 FutureTask:有返回值的多线程

    java多线程中,如果需要有返回值,就需要实现Callable接口。

    看例子:

    先建立一个Dowork这个类,就是平时某个业务的实现

    package com.ming.thread.one;
    
    import java.util.concurrent.Callable;
    
    /**
     * 
     * 定义一个具体做事情work
     * 线程运行完成后返回一个Stirng
     * @author ming
     *
     */
    public class Dowork implements Callable<String> {
    
        private int i=10;
        
        @Override
        public String call() throws Exception {
            while(i>0){
                System.out.println("i am work......"+i);
                i--;
                Thread.sleep(1000);
            }
            return "我做完了这次工作哦...";
        }
    
        
    }

    然后在我的测试类中,你可以看到要建立一个FutureTask这个任务调度,最后通过它可以获取线程执行的返回值.

    package com.ming.thread.one;
    
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.FutureTask;
    
    /**
     * 测试dowork的线程 
     * @author ming
     *
     */
    public class TestDowork {
    
        public static void main(String[] args) throws InterruptedException, ExecutionException {
            Dowork dowork=new Dowork();
            FutureTask<String> futureTask=new FutureTask<>(dowork);//新建一个检查dowork的线程任务
            new Thread(futureTask).start();
            while(!futureTask.isDone()){
                System.out.println("检查工作释放做完...");
                Thread.sleep(100);
            }
            String s=futureTask.get();
            System.out.println("获取追后返回值哦..."+s);
        }
    }

    ok,ok,ok。。。

  • 相关阅读:
    HDU 4975 A simple Gaussian elimination problem.
    HDU 4888 Redraw Beautiful Drawings
    ZOJ 3795 Grouping
    HDU 4971 A simple brute force problem.
    ERROR: unable to bind listening socket for address ’127
    linux命令
    有关nginx的配置文件 之server
    CentOS LNMP环境搭建 各版本
    PHP扩展安装方法
    Nginx如何配置虚拟主机?
  • 原文地址:https://www.cnblogs.com/huzi007/p/7053318.html
Copyright © 2011-2022 走看看