`
- 浏览:
364516 次
- 性别:
- 来自:
Alien
-
java线程:关于Callable和Future的简单使用:有返回值的线程
分类: java_线程2012-07-03 19:25 53人阅读 收藏 举报
- import java.util.Random;
- import java.util.concurrent.Callable;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- import java.util.concurrent.Future;
-
-
-
-
-
- public class CallableAndFutureTest {
-
- public static void main(String[] args) {
-
-
- ExecutorService threadPool = Executors.newFixedThreadPool(5);
-
-
- for(int i = 0; i < 20; i++){
- Future<String> future = threadPool.submit(new Callable<String>() {
- @Override
- public String call() throws Exception {
- return new Random().nextInt() + "";
- }
- });
-
- try {
- sop(i+ ": " + future.get());
- } catch (Exception e) {
-
- if( future != null ){
-
- future.cancel(true);
- threadPool.shutdownNow();
- }
- throw new RuntimeException(e);
- }
- }
- }
-
- private static void sop(Object obj){
- System.out.println(obj);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
大家都知道实现多线程的2种方式,今天来讲讲Future实现具有返回值的线程。应用场景:前端调用时无需等待线程结束返回,线程结束后需进行其它操作如更新状态、通知kafuka等。
Callable和Future详解: Callable和Runnable有几点不同: (1)Callable规定的方法是call(),而Runnable规定的方法是run(); (2)call()方法可抛出异常,而run()方法是不能抛出异常的。 (3)Runnable不会返回结果,...
JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。今天我们...
解决线程的死掉问题和超时问题特别好使,在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现。 Future接口是Java标准API的一部分,在java.util.concurrent...
Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。Callable和Runnable有几点不同: Callable规定的方法是call(),而Runnable规定的方法是run(). ...
JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。
学生提问:Java为什么要对这些数据进行缓存呢? 67 3.7.6 逻辑运算符 67 3.7.7 三目运算符 68 3.7.8 运算符的结合性和优先级 69 3.8 本章小结 70 本章练习 70 第4章 流程控制和数组 71 4.1 顺序结构 72 4.2 ...
使用excutors的静态方法创建线程.excute(runnable实现类)/.submit(callable实现类),.shutdown() (3)线程的生命周期:创建,就绪(start),运行(获得cpu资源),阻塞 object的方法:wait(notify,notifyall)...
引子 线程的创建和销毁比较消耗资源,... Future submit(Callable task):执行任务,有返回值,一般又来执行Callable void shutdown() :关闭线程池 AbstractExecutorService:基本实现了ExecutorService的所有方法 Th
17.2 有返回值的线程调用 384 17.2.1 Callable接口简介 384 17.2.2 Future接口简介 384 17.2.3 Callable与Future接口的具体使用 385 17.3 资源的封锁 386 17.3.1 Lock接口与ReentrantLock类简介 386 ...
25 3:ServicorTo 和 ServicorFrom 互换................................................................................................................25 2.3.3.1. 2.4.1. 如何确定垃圾 ......................
11.1.2 返回值与函数类型 11.2 调用函数 11.2.1 函数操作符 11.2.2 关键字参数 11.2.3 默认参数 11.2.4 参数组 11.3 创建函数 11.3.1 def语句 11.3.2 声明与定义比较 ...
11.1.2 返回值与函数类型 11.2 调用函数 11.2.1 函数操作符 11.2.2 关键字参数 11.2.3 默认参数 11.2.4 参数组 11.3 创建函数 11.3.1 def语句 11.3.2 声明与定义比较 ...
25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................