callable和future
callable和future,它俩很有意思的,一个产生结果,一个拿到结果。
callable接口类似于runnable,从名字就可以看出来了,但是runnable不会返回结果,并且无法抛出返回结果的异常,而callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被future拿到,也就是说,future可以拿到异步执行任务的返回值,
public class test extends object{
/**
* @param args
*/
public static void main(string[] args) {
executorservice threadpool = executors.newcachedthreadpool();
final completionservice
for(int i = 1; i < 5; i ) {
final int taskid = i;
cs.submit(new callable
public integer call() throws exception {
thread.sleep(1000);
return taskid;
}
});
}
system.out.println(" ***");
new thread(){
public void run(){
// 可能做一些事情
for(int i = 1; i < 5; i ) {
try {
system.out.println(cs.take().get());
} catch (interruptedexception e) {
e.printstacktrace();
} catch (executionexception e) {
e.printstacktrace();
}
}
}
}.start();
system.out.print(" pong");
}
void c(){
executorservice threadpool = executors.newsinglethreadexecutor();
future
public integer call() throws exception {
thread.sleep(1000);
return new random().nextint(100);
}
});
future = threadpool.submit(new callable
public integer call() throws exception {
thread.sleep(1000);
int i=new random().nextint(100);
system.out.println(i);
return i;
}
});
future = threadpool.submit(new callable
public integer call() throws exception {
thread.sleep(1000);
return new random().nextint(100);
}
});
system.out.print(" pong");
}
void b(){
for(int i=0;i<5;i ){
callable
public string call() throws exception {
thread.currentthread().sleep(2000);
system.out.println("call");
return string.valueof(new random().nextint(100));
}
};
futuretask
new thread(future).start();
try {
thread.currentthread().sleep(1000);
string s;
s = future.get();
system.out.println(s);
}
catch (interruptedexception e) {
system.out.println("**1**");
e.printstacktrace();
}catch (executionexception e) {
e.printstacktrace();
}
}
system.out.print(" pong");
}
void a(){
//int i=0,j,k=0;
//for(j=0;i<6 && j<10;i ,j ){
//k=i j;
//}
//system.out.println("i=" i ",j=" j);
callable
public string call() throws exception {
thread.currentthread().sleep(2000);
system.out.println("call");
return string.valueof(new random().nextint(100));
}
};
futuretask
new thread(future).start();
try {
thread.currentthread().sleep(1000);
string s;
s = future.get();
system.out.println(s);
}
catch (interruptedexception e) {
system.out.println("**1**");
e.printstacktrace();
}catch (executionexception e) {
// todo auto-generated catch block
e.printstacktrace();
}
/*new thread(){
public void run() {
system.out.print("ping");
}
}.start();
try {
thread.currentthread().sleep(1000);
} catch (interruptedexception e) {
// todo auto-generated catch block
e.printstacktrace();
}
system.out.print(" pong");
*/
system.out.print(" pong");
}
}
相关推荐
主要介绍了java使用callable和future创建线程操作,结合实例形式分析了java使用callable接口和future类创建线程的相关操作技巧与注意事项,需要的朋友可以参考下
java并发包之callable和future java并发包之callable和future java并发包之callable和future java并发包之callable和future java并发包之callable和future java并发包之callable和future
callable和future详解: callable和runnable有几点不同: (1)callable规定的方法是call(),而runnable规定的方法是run(); (2)call()方法可抛出异常,而run()方法是不能抛出异常的。 (3)runnable不会返回结果,...
主要介绍了java多线程callable和future接口区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了java中的runnable,callable,future,futuretask的比较的相关资料,需要的朋友可以参考下
callable,future的使用方式,里面使用了三种使用方式分别是futuretask,executorservice,executorcompletionservice
主要介绍了详解jdk中executorservice与callable和future对线程的支持的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
主要介绍了java通过callable和future来接收线程池的执行结果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要为大家详细介绍了java concurrency线程池之callable和future,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
自留demo,主要是thread-callable-future的基本实现。 参考文章: 1、深入理解callable https://blog.csdn.net/qq_19431333/article/details/77483763 2、彻底理解java的future模式: ...
callable是类似于runnable的接口,实现callable接口的类和实现runnable的类都是可被其它线程执行的任务
通过合规策略对服务器进行监控,确保服务器的运行、帐号在服务器上的操作符合预设的规则...进程:监控服务器上的进程,并对某些进程、目录、文件进行标识和监控,只允许指定的进程对指定目录下的指定格式文件执行写操作
2 如何使用futuretask 、future、callable、线程池实现线程2.1 futuretask callable实现多线程2.2 线程池 future callable 实现多线程3 runnable、callable、future和futuretask之间的关系3.1 整体关系介绍3.2 ...
1. 什么是线程? 2. 什么是线程安全和线程不安全? 3. 什么是⾃旋锁? 4. 什么是cas? 5. 什么是乐观锁和悲观锁? 6. 什么是aqs?...在java concurrency api中有哪些原⼦类(atomic classes)...10. 什么是callable和future?
主要介绍了浅谈在java中使用callable、future进行并行编程,具有一定借鉴价值,需要的朋友可以参考下。
什么是 callable 和 future? 线程的调度策略 sleep() 和 wait() 有什么区别? 什么是线程同步和线程互斥,有哪几种实现方式? java 线程数过多会造成什么异常? 并发编程-java内存模型 ## as-if-srial规则和happens-...
callablecallable与future在web应用中的优化案例
2万字java并发编程面试题合集(含答案,建议收藏) 具体如下 1、在 java 中守护线程和本地线程区别?2、线程与进程的区别?...14、什么是 callable 和 future?15、什么是 futuretask?使用 executorservice 启动任
主要介绍了java callable与future的详解及实例的相关资料,需要的朋友可以参考下
主要介绍了java并发编程callable与future的应用实例代码,具有一定借鉴价值,需要的朋友可以参考下