Java thread中的callback和Future的简单使用
来源:互联网 发布:淘宝授权书范本 编辑:程序博客网 时间:2024/05/22 13:39
package threadPa;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/**
* @author ltz:
* @version 上午11:43:37
* 类说明
*/
public class ThreadCallTest {
public static void main(String[]args){
ExecutorService exe=Executors.newCachedThreadPool();
Task task=new Task();
Future<Integer> result=exe.submit(task);
exe.shutdown();
try {
System.out.println("call result"+result.get());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
System.out.println("over");
}
}
class Task implements Callable<Integer>{
@Override
public Integer call() throws Exception {
System.out.println("begin ....");
Thread.sleep(3000);
return 100;
}
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/**
* @author ltz:
* @version 上午11:43:37
* 类说明
*/
public class ThreadCallTest {
public static void main(String[]args){
ExecutorService exe=Executors.newCachedThreadPool();
Task task=new Task();
Future<Integer> result=exe.submit(task);
exe.shutdown();
try {
System.out.println("call result"+result.get());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
System.out.println("over");
}
}
class Task implements Callable<Integer>{
@Override
public Integer call() throws Exception {
System.out.println("begin ....");
Thread.sleep(3000);
return 100;
}
}
我们先来看一下FutureTask的实现:
1
public
class
FutureTask<V>
implements
RunnableFuture<V>
FutureTask类实现了RunnableFuture接口,我们看一下RunnableFuture接口的实现:
1
2
3
public
interface
RunnableFuture<V>
extends
Runnable, Future<V> {
void
run();
}
可以看出RunnableFuture继承了Runnable接口和Future接口,而FutureTask实现了RunnableFuture接口。所以它既可以作为Runnable被线程执行,又可以作为Future得到Callable的返回值。
FutureTask提供了2个构造器:
1
2
3
4
public
FutureTask(Callable<V> callable) {
}
public
FutureTask(Runnable runnable, V result) {
}
事实上,FutureTask是Future接口的一个唯一实现类。
0 0
- Java thread中的callback和Future的简单使用
- Java 中的 Future 和 FutureTask 的使用
- java中的Callable和Future的使用和困惑
- java之简单的Callback使用总结
- Java的Callable和Future使用
- java线程:关于Callable和Future的简单使用:有返回值的线程
- java Future的使用
- Java中的Callable和Future
- Java中的Callable和Future
- Java中的Callable和Future
- Java中的Runnable、Callable、Future、FutureTask的区别和CompletionService的使用场景
- C++Future简单的使用
- Java中的简单回调Callback
- 并发编程 Promise, Future 和 Callback
- 并发编程 Promise, Future 和 Callback
- 并发编程 Promise, Future 和 Callback
- [转]并发编程 Promise, Future 和 Callback
- jsonp和callback的使用
- JQuery之Callback源码分析
- 持续集成 之 Jenkins插件 Multiple SCMs Plugin
- Ionic新建项目(以Android为例)
- [编程之美-02]把二元查找树变成为排序的双向链表
- Server.MapPath 的使用方法
- Java thread中的callback和Future的简单使用
- 互斥锁和条件变量
- Redis的安装,以及设置开机自启动
- 由浅入深之Dialog的基本弹框
- Centos7双系统安装教程
- unity3d AI 学习--个体行为操控(1)--具体行为类(3)-路径跟随和躲避障碍
- LeetCode分类
- java访问impala,hive的jar包
- TESTLINK 五要素