Future is introduced in JDK 1.5 by Doug Lea to represent "the result of an asynchronous computation". Java 5中引入了Future接口,用于代表异步计算的结果 ExecutorService exe = Executors.newCachedThreadPool(); Runnable runnable = () -> System.out.println("Run…
初识Callable and Future 在编码时,我们可以通过继承Thread或是实现Runnable接口来创建线程,但是这两种方式都存在一个缺陷:在执行完任务之后无法获取执行结果.如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到目的.Java5提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果. Callable and Future源码: (1)Callable接口: public interface Callable<V> { V…
Callable和Future出现的原因 创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口. 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果. 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦. 而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果. Callable和Future介绍 Callable接口代表一段可以调用并返回结果的代码…
使用 DJ Java Decompiler 将整个jar包反编译成源文件 所使用的软件是 DJ Java Decompiler 3.9. 下面是一个有用的参考文档,说明如何批量编译 http://www.udl.es/usuaris/jordim/Progs/Readme.txt 安装好之后,找到它的安装路径,我的是:C:\Program Files\decomp.然后将该路径加入到环境变量path中. 首先将要反编译的jar文件,用Winrar解压到和jar文件名称一样的文件夹中 在命令输入框…
原文:分享非常有用的Java程序 (关键代码)(五)---把 Array 转换成 Map import java.util.Map; import org.apache.commons.lang.ArrayUtils; public class Main { public static void main(String[] args) { String[][] countries = { { "United States", "New York" }, { &quo…
用java将简单的word文档换成pdf文档的方式很多,因为很多都没有实际测试过,所以这里就先泛泛的说一下 整体上来看分两种: 1.纯java代码实现,有很多优秀的开源软件可以用,比如poi,itext,xdocreport,docx4j等等.主要缺点是只能处理简单的文档 2.通过在操作系统安装转换软件,在java代码中调用软件命令来实现转换.常用的有OpenOffice,Pandoc,Jacob(限于Windows环境)等软件,优点是对于复杂的文档也能很好的处理.缺点是会麻烦一点,有的不能跨平…
老杜告诉你java小白到大神是怎么炼成的 1. 学习前的准备 一个好的学习方法(应该怎么学习更高效): 一个合格的程序员应该具备两个能力 有一个很好的指法速度(敲代码快) 有一个很好的编程思想(编程思路:能够使用编程的思路去解决现实生活中问题的一种能力) 指法速度 键盘的手势要正确,左手:asdf,右手:jkl;,如果你的手势不对,从现在开始纠正它. 刚开始的时候比较麻烦,还没有二指禅快呢,但是随着时间的推移,你的代码速度会有很明显的提升.只要坚持下来.一开始的时候一定要坚持盲打(强迫自己不看键…
概要 本章介绍线程池中的Callable和Future.Callable 和 Future 简介示例和源码分析(基于JDK1.7.0_40) 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544116.html Callable 和 Future 简介 Callable 和 Future 是比较有趣的一对组合.当我们需要获取线程的执行结果时,就需要用到它们.Callable用于产生结果,Future用于获取结果. 1. Callable Calla…
1. 背景 在Java5的多线程中,可以使用Callable接口来实现具有返回值的线程.使用线程池的submit方法提交Callable任务,利用submit方法返回的Future存根,调用此存根的get方法来获取整个线程池中所有任务的运行结果. 方法一:如果是自己写代码,应该是自己维护一个Collection保存submit方法返回的Future存根,然后在主线程中遍历这个Collection并调用Future存根的get()方法取到线程的返回值. 方法二:使用CompletionServic…
Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.Java可以用四种方式来创建线程: 继承Thread创建线程 实现Runnable接口创建线程 实现callable接口实现线程 使用线程池Executor创建线程 1.继承Thread实现线程 我们先来看一下Thread的源码,它是一个类,同样也实现了Runnable接口 public class Thread implements Runnable { /* Make sure registerNativ…