实现Callable接口,通过FutureTask包装器来创建线程,线程池 Callable接口可以提供返回值,比如卖票,卖完了以后可以return一个值回来 需要new一个FutureTask<>对象 泛型是返回值类型 然后通过Thread对象启动传入task对象实现Callable接口的线程对象 ...
分类:
编程语言 时间:
2020-01-08 10:51:58
阅读次数:
101
注意点:FutureTask是Runnable的实现类,它的构造器可以传Callable接口的实现类。 例子如下: class MyThread implements Callable<Integer> { @Override public Integer call() throws Excepti ...
分类:
其他好文 时间:
2020-01-07 22:48:07
阅读次数:
128
package callable; /* 创建线程方式三:实现Callable接口 1.创建一个实现Callable的实现类 2.实现call方法,将此线程需要执行的操作声明在次方法中 3.创建Callable接口实现类的对象 4.将此对象作为参数丢到FutureTask构造器中,创建FutureT ...
分类:
编程语言 时间:
2020-01-05 18:28:08
阅读次数:
98
方法有以下几种: 主线程等待法 使用Thread类的join()阻塞当前线程以等待子线程处理完毕 通过Callable接口实现: 通过FutureTask Or线程池获取 一、主线程等待法 如下代码 打印的结果为 将它改造成主线程等待法 这样,5秒后就能打印name的值 二、使用Thread类的jo ...
分类:
编程语言 时间:
2019-12-28 20:43:56
阅读次数:
92
项目中遇到线程池异步处理Callable请求,阻塞接收future.get()结果时,对线程中断状态位state的处理问题。try { Future<Object> future = executor.submit(callcable); future.get(); } catch (Interru ...
分类:
其他好文 时间:
2019-12-10 10:24:36
阅读次数:
1212
Java多线程 Java实现多线程有四种方式: 1.继承Thread类; 2.实现Runable接口; 3.实现Callable接口,通过FutureTask包装器来创建Thread线程; 4.使用ExecutorService、Callable、Future实现有返回结果的多线程; 其中前两种线程 ...
分类:
编程语言 时间:
2019-12-06 11:52:59
阅读次数:
103
1.继承Thread类,重写run()——【线程类】 2.实现Runnable接口,重写run()——【任务类】 3.实现Callable接口,重写call()——【带返回值的任务类】 eg. FutureTask<String> task = new FutureTask<>(new Task() ...
分类:
编程语言 时间:
2019-12-02 17:09:43
阅读次数:
103
通过Callable和Future创建线程 i. 创建Callable接口的实现类,并实现call方法,该call方法将作为线程执行体,并且有返回值,可以抛出异常。 ii. 创建Callable实现类的实例,使用FutureTask类包装Callable对象,该FuturedTask对象封装了Cal ...
分类:
编程语言 时间:
2019-11-22 14:04:55
阅读次数:
78
首先说点题外话。为什么要写这篇文章,因为在看J.U.C包的FutureTask源码的时候,有一个done()方法,这是个抽象方法,用户实现它之后,FutureTask会在执行完后调用这个方法。这就是回调机制,回调的思想就是:
类A调用类B的b方法
类B的b方法执行完毕主动调用类A的callback()方法
给出思想过于抽象,所以我会举出一个简单的实例(虽然简单,但是能说明问题),并总结Java实现回调的步骤。
实例基于知乎上一个解释什么是回调机制的回答。
描述: 一个顾客入住了一个酒店,酒店提供叫醒服务,顾客由于第二天早晨有很重要的事情,所以使用了叫醒服务。让酒店工作人员在第二天早晨7:00叫醒顾客。
在这个例子中,顾客是A类,酒店是B类,顾客预订叫醒服务相当于A调用了B的b方法,酒店叫醒顾客相当于B调用了A的callback方法(被叫醒)。
分类:
编程语言 时间:
2019-11-22 00:52:13
阅读次数:
87
Runnable、Callable、Future、FutureTask、Thread https://blog.csdn.net/qiang_xi/article/details/78114262 https://blog.csdn.net/qq_40728028/article/details/1 ...
分类:
编程语言 时间:
2019-11-12 01:11:48
阅读次数:
72