java高级---->Thread之FutureTask的使用
FutureTask类是Future 的一个实现,并实现了Runnable,所以可通过Excutor(线程池) 来执行,也可传递给Thread对象执行。今天我们通过实例来学习一下FutureTask的用法。
多线程中FutureTask的使用
一、FutureTask的简单使用
package com.huhx.chenhui.nio; import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask; public class CallableThreadTest implements Callable<Integer> {
public static void main(String[] args) {
CallableThreadTest threadTest = new CallableThreadTest();
FutureTask<Integer> future = new FutureTask<>(threadTest);
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + " 的循环变更i的值" + i);
if (i == 2) {
new Thread(future, "有返回的线程").start();
}
}
try {
System.out.println("子线程的返回值:" + future.get());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
} @Override
public Integer call() throws Exception {
int i = 0;
for (; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + "" + i);
}
return i;
}
}
运行结果如下:
main 的循环变更i的值0
main 的循环变更i的值1
main 的循环变更i的值2
main 的循环变更i的值3
main 的循环变更i的值4
main 的循环变更i的值5
main 的循环变更i的值6
main 的循环变更i的值7
main 的循环变更i的值8
main 的循环变更i的值9
有返回的线程0
有返回的线程1
有返回的线程2
有返回的线程3
有返回的线程4
有返回的线程5
有返回的线程6
有返回的线程7
有返回的线程8
有返回的线程9
子线程的返回值:
二、 FutureTask的get方法的超时测试
package com.linux.huhx.thread;
import java.util.concurrent.*;
public class FutureTest {
public static void main(String[] args) throws TimeoutException {
FutureTask<String> future = new FutureTask<String>(new Task());
new Thread(future).start();
try {
System.out.println(future.get(4L, TimeUnit.SECONDS));
System.out.println("main thread");
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
static class Task implements Callable<String> {
@Override
public String call() throws Exception {
System.out.println("begin: " + Thread.currentThread().getName() + ", " + System.currentTimeMillis());
TimeUnit.SECONDS.sleep(5);
return "hello";
}
}
}
运行的效果如下:
aaarticlea/gif;base64,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" alt="" />
官方文档对于这个方法的说明如下:
Waits if necessary for at most the given time for the computation to complete, and then retrieves its result, if available.
FutureTask的原理分析
FutureTask类的继承结构如下:
public class FutureTask<V> implements RunnableFuture<V>
public interface RunnableFuture<V> extends Runnable, Future<V>
FutureTask重写了run()方法,代码如下:
public void run() {
if (state != NEW ||
!UNSAFE.compareAndSwapObject(this, runnerOffset, null, Thread.currentThread()))
return;
try {
Callable<V> c = callable;
if (c != null && state == NEW) {
V result;
boolean ran;
try {
result = c.call(); // 调用Callable类中的call方法
ran = true;
} catch (Throwable ex) {
result = null;
ran = false;
setException(ex);
}
if (ran)
set(result);
}
} finally {
// runner must be non-null until state is settled to prevent concurrent calls to run()
runner = null;
// state must be re-read after nulling runner to prevent leaked interrupts
int s = state;
if (s >= INTERRUPTING)
handlePossibleCancellationInterrupt(s);
}
}
FutureTask的get方法,得到线程执行返回的结果。
Object x = outcome;
if (s == NORMAL)
return (V)x;
友情链接
java高级---->Thread之FutureTask的使用的更多相关文章
- java高级---->Thread之ScheduledExecutorService的使用
ScheduledExecutorService的主要作用就是可以将定时任务与线程池功能结合使用.今天我们来学习一下ScheduledExecutorService的用法.我们都太渺小了,那么容易便湮 ...
- java高级---->Thread之ExecutorService的使用
今天我们通过实例来学习一下ExecutorService的用法.我徒然学会了抗拒热闹,却还来不及透悟真正的冷清. ExecutorService的简单实例 一.ExecutorService的简单使用 ...
- java高级---->Thread之Phaser的使用
Phaser提供了动态增parties计数,这点比CyclicBarrier类操作parties更加方便.它是jdk1.7新增的类,今天我们就来学习一下它的用法.尘埃落定之后,回忆别来挑拨. Phas ...
- java高级---->Thread之CompletionService的使用
CompletionService的功能是以异步的方式一边生产新的任务,一边处理已完成任务的结果,这样可以将执行任务与处理任务分离开来进行处理.今天我们通过实例来学习一下CompletionServi ...
- java高级---->Thread之CyclicBarrier的使用
CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).今天我们就学习一下CyclicBarrier的用法. Cycl ...
- java高级---->Thread之BlockingQueue的使用
今天我们通过实例来学习一下BlockingQueue的用法.梦想,可以天花乱坠,理想,是我们一步一个脚印踩出来的坎坷道路. BlockingQueue的实例 官方文档上的对于BlockingQueue ...
- java高级---->Thread之Exchanger的使用
Exchanger可以在两个线程之间交换数据,只能是2个线程,他不支持更多的线程之间互换数据.今天我们就通过实例来学习一下Exchanger的用法. Exchanger的简单实例 Exchanger是 ...
- java高级---->Thread之Condition的使用
Condition 将 Object 监视器方法(wait.notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个等待 set ...
- java高级---->Thread之CountDownLatch的使用
CountDownLatch是JDK 5+里面闭锁的一个实现,允许一个或者多个线程等待某个事件的发生.今天我们通过一些实例来学习一下它的用法. CountDownLatch的简单使用 CountDow ...
随机推荐
- exit和wait一起可以彻底清除子进程的资源
#include<stdio.h> #include<unistd.h> #include<sys/types.h> #include<stdlib.h> ...
- jackson2.1.4 序列化 通过给定Class映射 与抽象类的映射
//如果已知想要序列化的类型 可以使用TypeReference来进行处理 //List<MyBean> result = mapper.readValue(src, new TypeRe ...
- 服务器不装Excel读取Excel并转换DataTable
原来是用OleDb.4.0组件读取Excel,但是放到服务器后 傻了,服务器没装Excel ,而且领导说不可以装 没办法,只好自己重新找下代码 在CodeProject找到一个开源的dll,一阵欢喜啊 ...
- 【转】【Java/Android】Toast使用方法大全
Toast 是一个 View 视图,快速的为用户显示少量的信息. Toast 在应用程序上浮动显示信息给用户,它永远不会获得焦点,不影响用户的输入等操作,主要用于 一些帮助 / 提示.Toast 最常 ...
- Can't connect to MySQL server on '192.168.7.175' (10060)
原因: 1.你的ip没有被授权,无法访问. 2.端口没有打开(如:3306端口没有打开). 解决方法: 授权(http://www.cnblogs.com/SZxiaochun/p/6401424.h ...
- 谷歌修复了 FFmpeg 中上千个 bug
谷歌在科技业界中几乎每天都会创造出新闻素材,它的触手涉及到了生活中的多个领域.最近谷歌将其Google +社交网络与邮件服务Gmail相结合.然而今天谷歌宣布他们修复了FFmpeg的上千个bug. ...
- 初涉RxAndroid结合Glide实现多图片载入操作
转载请注明出处:王亟亟的大牛之路 本来周末就想发了然后各种拖拉就没有然后了,那么就今天早上写吧,废话不多開始正题 什么是RxJava或者RxAndroid我就不多废话了,理论知识一大堆人给我们做好了. ...
- jQuery分页插件(jquery.page.js)的使用
效果描述: 不用分页即可显示的jQuery插件 jQuery分页插件——jQuery.page.js用法很简单,效果很棒 1.前端 首先html的head中引入相关css与js <lin ...
- 感谢各位亲们的大力支持,免费的HTML5学习课程《HTML5网页开发实例具体解释》连载已经结束了!
感谢各位亲们的大力支持,免费的HTML5学习课程<HTML5网页开发实例具体解释>连载已经结束了. 有兴趣的读者能够看我的博客,也能够看以下的链接逐个学习: 当里个当.免费的HTML5连 ...
- zookper3.4.6集群配置
参考链接: http://blog.csdn.net/shirdrn/article/details/7183503 个人感觉zookeeper 安装在单机上无操作意义,所以直接记录集群配置过程. 连 ...