zoukankan      html  css  js  c++  java
  • 实现多线程的另一种方式-Callable

    package com.mldn.thread;
    
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.FutureTask;
    
    public class TestMyCallable {
         public static void main(String[] args) throws InterruptedException, ExecutionException {
             /*构造方法摘要 
                FutureTask(Callable<V> callable): 
                创建一个 FutureTask,一旦运行就执行给定的 Callable。 
              */
    
            FutureTask task = new FutureTask(new MyCallable());
            /*
             * class  FutureTask  implements RunnableFuture
             * interface RunnableFuture extends Runnable,Future
             * 说明:FutureTask也是Runnable的子类
             */
            //这里的task可以当作Runnable对象
            
            new Thread(task).start();//启动线程
            System.out.println(task.get());//返回结果
        }
    }
    
    
    /*------------------------自定义类MyCallable---------------------------*/
    
    package com.thread;
    
    import java.util.concurrent.Callable;
    
    /*
     * 自定义类实现Callable接口
     * Runnable和Callable的区别:
     *   Runnable执行完线程程序后没有返回结果(重写run方法)
     *   Callable执行完线程程序后有返回结果 (重写call方法)
     */
    public class MyCallable implements Callable<String> {
    
        @Override
        public String call() throws Exception {
            for(int i=10;i>0;i--){
                System.out.println(i);
            }
            return "票卖完了,下次吧。。。";//有返回结果
        }
    }
  • 相关阅读:
    移动前端开发之viewport的深入理解
    javascript的事件监听与捕获和冒泡
    AngularJS服务中serivce,factory,provider的区别
    使用shadow dom封装web组件
    Web Components之Custom Elements
    javascript 布尔类型值判断
    requestAnimationFrame()
    二十周年感言
    文件上传实例
    jhipster技术栈研究
  • 原文地址:https://www.cnblogs.com/yuefeng123/p/7463732.html
Copyright © 2011-2022 走看看