• 使用Callable和Future创建线程


    前言

    从Java 5开始,Java提供了Callable接口,该接口是Runnable接口的增强版,Callable接口提供了一个call()方法,可以看作是线程的执行体,但call()方法比run()方法更强大, call()方法可以有返回值,call()方法可以声明抛出异常。

    使用代码

    public class ThreadCallable implements Callable<Integer> {
    
        public static void main(String[] args) throws ExecutionException, InterruptedException {
            ThreadCallable threadCallable = new ThreadCallable();
            FutureTask<Integer> integerFutureTask = new FutureTask<>(threadCallable);
            new Thread(integerFutureTask).start();
            Integer result = integerFutureTask.get();
            System.out.println(result);
        }
    
        @Override
        public Integer call() throws Exception {
            System.out.println(Thread.currentThread().getName() + ",执行计算操作");
            Thread.sleep(3000);
            return 1;
        }
    }
    

    总结

    Callable和Future 线程可以获取到返回结果,底层基于LockSupport,在执行integerFutureTask.get()方法时,使用LockSupport,先阻塞主线程,子线程执行完毕之后再唤醒主线程。
  • 相关阅读:
    C语言中 单引号与双引号的区别
    Linux主分区,扩展分区,逻辑分区的联系和区别
    fdisk
    df du 的区别
    filesystem
    git clone
    curl
    HDR 高动态范围图像
    source ~/.bashrc 什么意思
    linux 挂载
  • 原文地址:https://www.cnblogs.com/LoveShare/p/16398506.html
Copyright © 2020-2023  润新知