Future&Callable详细讲解

简述

  1. 实现Callable接口,Callable只有一个方法,它是有返回值的,也可以抛出异常,它的执行结果可以被Future拿到

重要方法

// 取消任务,取消成功返回true,取消失败返回false,mayInterruptIfRunning参数决定一个开启的任务能否被中断,如果任务已经完成,不管mayInterruptIfRunning为true或false,结果都为false,即取消完成的任务会返回false
boolean cancel(boolean mayInterruptIfRunning);
// 判断任务是否被取消,如果任务在正常完成前被取消直接返回true
boolean isCancelled();
// 表示当前任务或所有的任务是否已经完成,如果任务完成,返回true
boolean isDone();
// 获取执行结果,在这个过程中线程会一直阻塞,直到任务执行完毕,如果在此过程中,线程被中断直接抛出异常
V get() throws InterruptedException, ExecutionException;
V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException;

参考

Java多线程编程:Callable、Future和FutureTask浅析(多线程编程之四)
Future&Callable

Java多线程的源码非常庞大,涉及到很多的类和接口,这里简要介绍一下Java多线程的核心类和接口。 1. Thread类 Thread类是Java多线程的核心类,它表示一个线程。Thread类的源码非常庞大,主要包含以下几个方法: - start():启动线程 - run():线程执行的代码 - sleep():使线程睡眠一段时间 - yield():暂停当前线程,让出CPU执行权 - join():等待线程执行完毕 - interrupt():中断线程 - isAlive():判断线程是否还活着 2. Runnable接口 Runnable接口表示一个线程执行的代码块,它只有一个run()方法。在Java中,一个线程可以通过实现Runnable接口来指定执行的代码。例如: ```java public class MyRunnable implements Runnable { public void run() { // 线程执行的代码 } } ``` 3. Callable接口 Callable接口也表示一个线程执行的代码块,它比Runnable接口更强大,可以返回一个值。在Java中,一个线程可以通过实现Callable接口来指定执行的代码,并返回一个值。例如: ```java public class MyCallable implements Callable<Integer> { public Integer call() throws Exception { // 线程执行的代码 return 0; } } ``` 4. Executor接口 Executor接口表示一个异步执行的任务,它把任务和执行器分离开来,使得任务可以独立于执行器进行测试和开发。Executor接口提供了一些方法来执行任务,例如: - execute(Runnable command):执行一个Runnable任务 - submit(Callable task):执行一个Callable任务,并返回一个Future对象 5. ExecutorService接口 ExecutorService接口继承自Executor接口,它提供了一些扩展的方法来管理和控制执行器。例如: - shutdown():关闭执行器 - submit(Runnable task):执行一个Runnable任务,并返回一个Future对象 - submit(Callable task):执行一个Callable任务,并返回一个Future对象 6. Future接口 Future接口表示一个异步执行的任务的结果。它提供了一些方法来查询任务是否已经完成、获取任务的结果等。例如: - isDone():判断任务是否已经完成 - get():获取任务的结果 以上是Java多线程的一些核心类和接口,它们构成了Java多线程的基础框架。除此之外,Java还提供了许多其他的类和接口,例如Lock、Condition、Semaphore等,用于实现更加高级的多线程功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值