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。。。

  • 相关阅读:
    GUI 监听事件 (两个按钮,实现同一个监听)
    GUI 监听事件
    GUI 练习
    GUI 之表格布局
    GUI 之边界布局
    GUI 之流布局
    [转帖]Linux 下解压 rar 文件
    Linux 启动、停止、重启jar包脚本
    关于linux下,ls vi等命令失效的解决方法(配置下环境变量出现问题)
    超好用的UnixLinux 命令技巧 大神为你详细解读
  • 原文地址:https://www.cnblogs.com/huzi007/p/7053318.html
Copyright © 2011-2022 走看看