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;
/**
* 这个类主要展示Future的使用,可以用它来提交一些需要时间较长的任务,然后系统就可以去做其它工作了
* 完成其它工作后再取得结果,如果结果仍未完成,会阻塞等待!
* @author Administrator
*
*/
public class FutureTest {
private static final ExecutorService exec=Executors.newFixedThreadPool(10);
public static void main(String[] args) {
System.out.println("main start.......");
Callable<String> task=new Callable<String>() {
public String call() throws Exception {
Thread.sleep(5000);
return "王法波";
}
};
System.out.println("after task created....");
System.out.println("submit task....");
Future <String>future=exec.submit(task);//提交任务
long start=System.nanoTime();
System.out.println("提交任务后可以继续执行,即使任务未完成....."+(System.nanoTime()-start));//进行其它工作
try {
String str=future.get();
System.out.println(str);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
System.out.println("被阻塞"+(System.nanoTime()-start)+"毫微秒");
exec.shutdown();
}
}
相关推荐
下面我们将详细探讨`Future`接口的使用方法。 1. **接口方法解析** - `boolean cancel(boolean mayInterruptIfRunning)`:用于取消任务的执行。如果`mayInterruptIfRunning`为`true`,则尝试中断正在执行的任务;...
Java多线程Callable和Future接口是Java语言中两个非常重要的接口,它们都是Java多线程编程中使用的接口,用于描述异步计算的结果。在JavaSE5中引入的Callable是一个具有类型参数的范型,他的类型参数方法表示为方法...
Java使用Callable和Future创建线程操作示例主要介绍了Java使用Callable和Future创建线程操作,结合实例形式分析了java使用Callable接口和Future类创建线程的相关操作技巧与注意事项。 首先,Java 5开始,Java提供了...
下面我们将深入探讨`Callable`和`Future`接口的使用方法。 首先,我们创建一个自定义的`Callable`任务类`MyCallableClass`,它实现了`Callable<String>`接口。这个类包含一个`flag`字段,根据`flag`的值,`call()`...
`future`库的主要目标是提供一种简单的方式来编写同时兼容Python2和Python3的代码,它通过引入了新的语法特性并提供了向后兼容的接口,使得开发者可以在Python2环境中使用Python3的语法和功能。这对于维护大型项目...
`future-0.17.1.tar.gz`是该库的一个版本压缩包,包含了在Python项目中使用`future`库所需的全部资源。下面我们将详细探讨`future`库的用途、功能以及如何正确安装。 `future`库的核心功能是帮助开发者编写同时兼容...
相比之下,`asyncio.Future.result()`不支持超时参数,建议在`asyncio`环境中使用`yield from`结构获取结果。 `Executor.map()`方法返回一个迭代器,迭代器的`__next__`方法调用每个`Future`的`.result()`方法,...
未来(Future)在编程中通常指的是异步计算的概念,特别是在Python中,`concurrent.futures`模块提供了对异步操作的高级接口。这个"future"包可能是一个针对分布式环境的异步计算框架,利用Zookeeper进行任务协调和...
解决线程的死掉问题和超时问题特别好使,在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现。 Future接口是Java标准API的一部分,在java.util.concurrent...
在实际应用中,`futures`模块通常与`asyncio`库结合使用,构建更复杂的异步程序。`asyncio`提供了一套基于协程的异步I/O框架,可以更好地管理`Future`对象,并与事件循环协同工作。 总结起来,`futures`模块是...
开发者可能还发现一些新的API或接口,以更方便地使用此库进行跨版本的编程。同时,文档的改进和示例代码的更新也会帮助开发者更好地理解和利用这个库。 总的来说,"future-0.18.3"是一个旨在简化Python 2到Python 3...
通过合理使用`Future`,我们可以创建更高效、更灵活的多线程应用程序。在设计并发系统时,理解和有效利用`Future`接口及其相关类(如`ExecutorService`和`Callable`)是提升程序性能和可维护性的关键。
3. **Future**: Future接口是用于异步计算的结果表示,它提供了一组方法来检查任务是否完成,取消任务,以及获取或设置计算结果。其中,`get()`方法会阻塞直到任务完成,返回结果;如果任务未完成,`get()`会等待。...
在实际应用中,Java 提供了 FutureTask 类作为 Future 接口的一个实现,可以直接用于 Thread 或 ExecutorService。此外,SwingWorker 是 Swing 库中的一个 Future 实现,特别适用于 GUI 应用程序中的后台计算。 ...
本文将详细解析`Future`接口及其在实际编程中的应用。 1. **`Future`接口介绍** `Future`接口代表一个异步计算的结果。它提供了检查计算是否完成、获取或等待结果、取消任务等方法。这个接口并不保证结果的立即可用...
在Java中,`java.util.concurrent.Future`接口就是这样的一个概念,它允许我们注册回调或者查询结果是否已经准备好。而在Kotlin的上下文中,"Future"可以被看作是一种异步操作的抽象,它代表了将来的值,可以用来...
3. **`six`模块的替代品**:`six`是一个著名的Python版本兼容库,而`future`提供了一种更直接的方式来处理版本差异,它可能提供了与`six`类似的接口,但更专注于让代码向后兼容。 4. **`stdlib_modules`**:`future...
2. **标准库的移植**:"future"模块提供了移植版的Python 3标准库,如`urllib`, `urllib.request`, `urllib.parse`, `xmlrpc.client`, 等等,使得在Python 2中也能使用这些更新的接口。 3. **类型定义**:为Python ...
`Future`接口提供了对异步计算结果的访问和控制,而`FutureTask`是`Future`的一个具体实现,它还同时实现了`Runnable`接口,因此可以直接提交给`Executor`执行。 `Future`接口提供了以下方法: 1. `boolean cancel...
因此,FutureTask不仅实现了Future接口的所有方法,还具有自己的run方法。 三、Future与FutureTask的关系 Future和FutureTask都是用于获取线程执行的返回结果,但是它们之间存在一些差异: 1. Future是接口,...