- 浏览: 193425 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wentry:
java中字符带有斜杠时,比如\\x00\\x00\\x00\ ...
java中调用js脚本 -
chenzheng8975:
...
ajax -
蓝色飞扬:
有用,也碰到这个问题了,多谢!
java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion -
刘宇斌:
一篇不错的讲解Java异常的文章(转载)----感觉很不错,读了以后很有启发 -
moxiaomomo:
同样的疑问啊...对tomcat缓存仍然一知半解...
tomcat 缓存
java.util.concurrent.Callable与java.util.concurrent.Future类可以协助您完成Future模式。Future模式在请求发生时,会先产生一个Future对象给发出请求的客户。它的作用类似于代理(Proxy)对象,而同时所代理的真正目标对象的生成是由一个新的线程持续进行。真正的目标对象生成之后,将之设置到Future之中,而当客户端真正需要目标对象时,目标对象也已经准备好,可以让客户提取使用。
关于Future模式的说明,可以参考:
http://caterpillar.onlyfun.net/Gossip/DesignPattern/FuturePattern.htm
Callable是一个接口,与Runnable类似,包含一个必须实现的方法,可以启动为让另一个线程来执行。不过Callable工作完成后,可以传回结果对象。Callable接口的定义如下:
public interface Callable<V> { V call() throws Exception; } |
例如,可以使用Callable完成某个费时的工作,工作结束后传回结果对象,例如求质数范例15.24:
范例15.24 PrimeCallable.java
package onlyfun.caterpillar; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable;
public class PrimeCallable implements Callable<int[]> {
for(int i = 2; i <= max; i++)
for(int i = 2; i*i <= max; i++) { // 这里可以改进
for(int i = 2; i < max; i++) { |
程序中的求质数方法是很简单的,但效率不好,这里只是为了示范方便,才使用简单的求质数方法,要更有效率地求质数,可以参考Eratosthenes筛选求质数:
http://caterpillar.onlyfun.net/Gossip/AlgorithmGossip/EratosthenesPrime.htm
假设现在求质数的需求是在启动PrimeCallable后的几秒之后,则可以使用Future来获得Callable执行的结果,从而在未来的时间点获得结果,例如范例15.25:
范例15.25 FutureDemo.java
package onlyfun.caterpillar; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; public class FutureDemo { public static void main(String[] args) { Callable<int[]> primeCallable = new PrimeCallable(1000); FutureTask<int[]> primeTask = new FutureTask<int[]>(primeCallable); Thread t = new Thread(primeTask); t.start(); try { // 假设现在做其他事情 Thread.sleep(5000); // 回来看看质数找好了吗 if(primeTask.isDone()) { int[] primes = primeTask.get(); for(int prime : primes) { System.out.print(prime + " "); } System.out.println(); } } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } } |
java.util.concurrent.FutureTask是一个代理,真正执行找质数功能的是Callable对象。使用另一个线程启动FutureTask,之后就可以做其他的事了。等到某个时间点,用isDone()观察任务是否完成,如果完成了,就可以获得结果。一个执行结果如下,显示所有找到的质数:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 541 547 557 563 569 571 577 587 593 599 601 607 613 617 619 631 641 643 647 653 659 661 673 677 683 691 701 709 719 727 733 739 743 751 757 761 769 773 787 797 809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971 977 983 991 997 |
用户可能需要快速翻页浏览文件,但在浏览到有图片的页数时,由于图片文件很大,导致图片加载较慢,造成用户浏览文件时会有停顿的现象。因此希望在文件开启之后,仍有一个后台作业持续加载图片。这样,用户在快速浏览页面时,所造成的停顿可以获得改善,从而可以考虑使用这里所介绍的功能
发表评论
-
java 修饰符
2009-10-31 16:37 1341Java语言定义了public、protected、priva ... -
Java虚拟机 堆
2009-10-25 22:27 1070Java程序在运行时创建的所有类实例或者数组都放在堆 ... -
Java虚拟机 方法区
2009-10-25 21:09 1820对于被装载的每个类,虚拟机都会把这个类的类型信息存储在方法区, ... -
Java虚拟机 体系结构
2009-10-25 21:03 1210当一个Java虚拟机运行一 ... -
java中调用js脚本
2009-10-16 18:27 14852JDK1.6加入了对Script(JSR ... -
Java 位运算
2009-09-28 16:43 4979Java 位运算[转] 一,Java 位运算 ... -
拾遗补缺-jdk6新特性
2009-08-09 17:13 12021,输出到文件 java Hello.java > he ... -
拾遗补缺-ResourceBundle
2009-08-08 23:54 2442http://gceclub.sun.com.cn/Java_ ... -
拾遗补缺-logger
2009-08-08 23:33 1153java.util.logging.Logger的使用 20 ... -
拾遗补缺-date
2009-08-08 23:22 932DateFormat 来格式化日期 2009年01月21日 ... -
classloader
2009-08-08 22:53 1095什么是ClassLoader ClassLoader是一个抽 ... -
concurren套件(转载)
2009-08-08 22:31 1269从J2SE 5.0开始有了java.util.concurre ... -
java多线程转载
2009-08-07 18:06 1124Java Thread API 允许程序员编写具有多处理机制优 ... -
java字符集
2009-08-04 17:05 1880ASCII 字符集 1.名称的由来 ASCII( ... -
ajax
2007-09-22 18:12 1475今天第一 ... -
Ajax链接servlet的一个注意事项
2007-09-23 18:02 860这是我用到的一段代码: createXMLHttpReq ... -
tomcat 缓存
2007-09-24 19:28 1449今天写项目的时候遇到一个问题: 就是当打印自定义异常的时候一 ... -
如何用javascript控制checkbox,并进行批量删除
2007-09-24 19:51 1707在做系统数据删除的时候,往往需要批量删除一些数据,如何做到呢? ... -
用servlet filter 解决编码问题的一个小例子
2007-09-24 20:02 1195当在做程序的是你也许会遇到一些很让你恼火的乱码问 ... -
转发和重定向的区别的一点理解
2007-09-24 21:54 971他们的调用分别如下例: request.getRequest ...
相关推荐
主要介绍了Java使用Callable和Future创建线程操作,结合实例形式分析了java使用Callable接口和Future类创建线程的相关操作技巧与注意事项,需要的朋友可以参考下
CallableCallable与Future在Web应用中的优化案例
主要介绍了Java中的Runnable,Callable,Future,FutureTask的比较的相关资料,需要的朋友可以参考下
Callable,Future的使用方式,里面使用了三种使用方式分别是FutureTask,ExecutorService,ExecutorCompletionService
主要介绍了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不会返回结果,...
自留demo,主要是Thread-Callable-Future的基本实现。 参考文章: 1、深入理解Callable https://blog.csdn.net/qq_19431333/article/details/77483763 2、彻底理解Java的Future模式: ...
通过合规策略对服务器进行监控,确保服务器的运行、帐号在服务器上的操作符合预设的规则。日志:收集、整理服务器的日志信息,提供给管理员查看,并作为异常判断、故障排查的依据。进程:监控服务器上的进程,并对...
主要介绍了Java多线程Callable和Future接口区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
2 如何使用FutureTask 、Future、Callable、线程池实现线程2.1 FutureTask + Callable实现多线程2.2 线程池+Future+Callable 实现多线程3 Runnable、Callable、Future和FutureTask之间的关系3.1 整体关系介绍3.2 ...
主要介绍了详解JDK中ExecutorService与Callable和Future对线程的支持的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
主要介绍了浅谈在Java中使用Callable、Future进行并行编程,具有一定借鉴价值,需要的朋友可以参考下。
主要介绍了java通过Callable和Future来接收线程池的执行结果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
6.3.2 携带结果的任务Callable与Future 6.3.3 示例:使用Future实现页面渲染器 6.3.4 在异构任务并行化中存在的局限 6.3.5 CompletionService:Executor与BlockingQueue 6.3.6 示例:使用CompletionService实现...
6.3.2 携带结果的任务Callable与Future 6.3.3 示例:使用Future实现页面渲染器 6.3.4 在异构任务并行化中存在的局限 6.3.5 CompletionService:Executor与BlockingQueue 6.3.6 示例:使用CompletionService实现...
主要为大家详细介绍了Java concurrency线程池之Callable和Future,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
技术方案基于ExecutorService、Callable、Future等高级Java并发API。 技术栈 JDK 8 Apache Maven v.3.2 构建说明 从应用程序根目录调用以下 maven 命令: mvn clean package 检查构建日志,确保构建成功: ...