- 浏览: 772744 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (208)
- Java (77)
- JavaScript (16)
- UML (1)
- Spring (24)
- Hibernate (11)
- J2EE部署 (18)
- 操作系统 (13)
- struts (11)
- jsp (3)
- J2EE (34)
- 数据库 (22)
- tomcat (4)
- apache (2)
- MyEclipse (13)
- Linux (14)
- Ext (6)
- Weblogic (2)
- 数据库 Oracle 空表导出 (1)
- Oracle (3)
- 编码 乱码 (1)
- 多线程 (5)
- jQuery (2)
- Apache Mina (1)
- ibatis (6)
- abator (1)
- svn (1)
- jvm (1)
- ERwin (2)
- mysql (2)
- ant (1)
- memcache (1)
- dubbo (1)
- PowerDesigner (1)
最新评论
-
di1984HIT:
Shallow heap & Retained heap -
tinguo002:
非常感谢 , 太棒了。
Spring注解方式,异常 'sessionFactory' or 'hibernateTemplate' is required的解决方法 -
白天看黑夜:
Apache Mina Server 2.0 中文参考手册(带 ...
Apache Mina – 简单的客户端/服务端应用示例 -
wumingxingzhe:
好文
Shallow heap & Retained heap -
di1984HIT:
学习了!!
工作流(Workflow)和BPM的不同
import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; /** * * @author Kaiwii Ho * Callable类就是一个有返回值的任务 * 对于任务与Thread之间的关系,可以这样子理解: * Callable类的实例就是一个锦囊妙计;而Thread就是执行这个锦囊妙计的过程 * * FutureTask类(Future接口的一个实现)就是一个监视器:检测着被若干个异步线程操作的变量的一个类 * * 代码演示了主线程如何通过使用Callable类和FutureTask类,实现: * 主线程一边等待子线程的处理结果,一边完成自己的工作。 * *考虑以下一个小黑工kaiwii的故事…… */ public class TestFutureTask { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //准备一份工作给一个打工仔employee叫Kaiwii Employee kaiwii=new Employee("kaiwii"); //新建一个监工头inspector FutureTask<Double>inspector=new FutureTask<Double>(kaiwii); //让kaiwii这个打工仔工作 System.out.println("老板发话,让kaiwii这个打工仔工作吧!"); new Thread(inspector).start(); System.out.println("老板开始数钱!"); //老板一边数钱,一边命令监工inspector监视Kaiwii工作;一旦kaiwii完成工作就拿来让他检查 while(!inspector.isDone()){ System.out.println("老板数钱中……"); try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //老板交监工inspector将kaiwii的结果呈上来以便他验收kaiwii计算出来的结果 try { System.out.println("老板发现kaiwii的结果是:"+inspector.get()); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ExecutionException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //子线程 class Employee implements Callable<Double>{ String employee_name; private void setEmployee_name(String employee_name) { this.employee_name = employee_name; } public Employee(String employee_name) { setEmployee_name(employee_name); } @Override public Double call() throws Exception { // TODO Auto-generated method stub System.out.println("工人"+employee_name+"说:我开始工作了!!!!"); for(int i=1;i<=10;i++){ System.out.println("工人"+employee_name+" 第"+i+"次说:我在工作呢!!!!"); Thread.sleep(1000); } System.out.println("工人"+employee_name+"说:我搞好了!!!!"); return Math.random(); } }
console显示结果:
老板发话,让kaiwii这个打工仔工作吧!
老板开始数钱!
工人kaiwii说:我开始工作了!!!!
工人kaiwii 第1次说:我在工作呢!!!!
老板数钱中……
老板数钱中……
工人kaiwii 第2次说:我在工作呢!!!!
老板数钱中……
老板数钱中……
老板数钱中……
工人kaiwii 第3次说:我在工作呢!!!!
老板数钱中……
老板数钱中……
工人kaiwii 第4次说:我在工作呢!!!!
老板数钱中……
老板数钱中……
工人kaiwii 第5次说:我在工作呢!!!!
老板数钱中……
老板数钱中……
工人kaiwii 第6次说:我在工作呢!!!!
老板数钱中……
老板数钱中……
工人kaiwii 第7次说:我在工作呢!!!!
老板数钱中……
老板数钱中……
工人kaiwii 第8次说:我在工作呢!!!!
老板数钱中……
老板数钱中……
工人kaiwii 第9次说:我在工作呢!!!!
老板数钱中……
老板数钱中……
工人kaiwii 第10次说:我在工作呢!!!!
老板数钱中……
工人kaiwii说:我搞好了!!!!
老板数钱中……
老板发现kaiwii的结果是:0.5295364482450889
发表评论
-
Eclipse,javaw 通过Proxifile代理ipv6协议问题解决
2015-03-17 18:06 2797myeclipse2010升级到myeclipse2014之后 ... -
初始化EHcache CacheManager时报java.net.UnknownHostException
2014-11-13 11:45 12510工程启动时,报一下异常: [wdfportal] [201 ... -
tomcat7可能带来的问题
2013-06-27 00:31 9841、struts标签校验更加严格,如果struts标签中存在嵌 ... -
iBatis执行insert后返回主键
2013-01-18 23:55 1652iBatis插入数据后,返回主键。级联操作很有用。省去了一次的 ... -
Shallow heap & Retained heap
2012-05-16 17:09 49320所有包含Heap Profling功能的工具(MAT, You ... -
Abator —— IBatis 代码生成工具
2012-04-03 18:31 19351、在eclipse安装abator插件http://ibat ... -
使用Eclipse远程调试Tomcat
2012-03-23 22:56 1510有些时候,调试不得不用外网,比如说做支付宝的支付接口,服务器后 ... -
Java compiler level does not match the version of the installed Java project fac
2012-03-02 11:32 1320问题现象:项目图标报错“Java compiler level ... -
WebService的事务处理
2012-03-01 15:03 1561如果你只是要解决两个系统之间的事务同步问题,可以采用判断服务是 ... -
线程池(java.util.concurrent.ThreadPoolExecutor)的使用
2012-02-29 15:50 2508一、简介 线程池类为 j ... -
myeclipse 颜色设置(保护视力)
2012-02-28 09:29 20911.window -> Preferences -> ... -
Quartz表达式解析
2012-02-08 14:40 807字段 允许值 允许的特 ... -
使用iBatis中报 java.sql.SQLException: 无效的列类型异常
2011-12-15 14:46 2242<!--Content表 插入应的 ... -
非常有用的proxool属性详细解说
2011-12-13 16:19 1612Proxool连接池是sourceforge下的一个开源项目, ... -
在工程中查找自己修改的所有代码
2011-12-09 17:41 1049在工程中查找自己修改的所有代码的方法: 1.工程右键 -&g ... -
如何在Eclipse中安装和使用ibatis插件Abator
2011-12-01 21:26 49741、获得abator: http://ibatis. ... -
newCachedThreadPool线程池
2011-11-20 11:35 43036public static ExecutorService n ... -
Apache Mina – 简单的客户端/服务端应用示例
2011-11-19 23:49 5530转自http://javasight.net/2011/05/ ... -
Class.forName()、Class.forName().newInstance() 、New 三者区别!
2011-11-15 09:18 1263终于明白为什么加载数据库驱动只用Class.forName() ... -
Apache MINA 快速入门指南
2011-11-13 12:04 1661最近用到Socket套接字编程,在服务器监听方面还没有具体思路 ...
相关推荐
Java使用Callable和Future创建线程操作示例主要介绍了Java使用Callable和Future创建线程操作,结合实例形式分析了java使用Callable接口和Future类创建线程的相关操作技巧与注意事项。 首先,Java 5开始,Java提供了...
`ExecutorService`可以接收`Runnable`或`Callable`任务,因此`FutureTask`在Android多线程中也很常见。 总结一下,`Runnable`用于无返回值的简单任务,`Callable`用于有返回值的任务,`Future`作为结果的容器,而`...
FutureTask可以与ExecutorService结合使用,实现多任务计算。在这种场景下,主线程可以继续执行其他任务,而不需要等待计算结果。例如,在一个科学计算应用中,需要对大量数据进行计算,可以使用FutureTask和...
为了解决这个问题,Java提供了`Callable`接口和`FutureTask`类,它们是实现多线程返回值的关键工具。 `Callable`接口类似于`Runnable`,但比它功能更强大。`Callable`接口中的`call()`方法可以返回一个结果,并且...
Java中的Runnable、Callable、Future和FutureTask是Java多线程编程中的核心概念,它们各自扮演着不同的角色,共同协作以实现并发任务的管理和执行。 1. **Runnable**: Runnable是最基本的多线程接口,它只有一个`...
### Java Callable与多线程详解 在Java编程中,`Callable`接口是处理多线程问题的一个重要概念,尤其在需要从线程中返回结果的情况下。`Callable`接口与我们熟知的`Runnable`接口相似,但功能更加强大,主要体现在...
本文将详细解释Callable接口的使用、适配器模式在创建线程中的应用,以及FutureTask在其中的角色。 首先,Callable接口与Runnable接口类似,都是用于创建新线程的接口。但是,Runnable接口的run()方法无返回值,而...
3. **实现Callable接口**:自Java 1.5开始,可以使用`Callable`接口结合`FutureTask`来创建有返回值的线程。 #### 四、启动线程 启动线程时,应当使用`Thread`对象的`start()`方法,而不是直接调用`run()`方法。这...
#### 十、Callable结合FutureTask的多线程使用(免打扰模式) - **实现**:创建`Callable`接口的实现类,通过`FutureTask`包装`Callable`对象,然后创建线程。 - **优点**:能够获取线程执行的结果,支持异步编程...
Java提供多种创建线程的方式,如继承Thread类、实现Runnable接口以及使用ExecutorService和Callable接口。每种方式有其适用场景和优缺点,例如,实现Runnable接口比继承Thread更灵活,因为可以避免类的单继承限制。 ...
Callable接口和Future接口的组合使用,能够实现多线程并发执行任务,并获取执行结果。 一、Callable接口简介 Callable接口是一个泛型接口,用于表示可以调用并返回结果的代码。它提供了一个call()方法,该方法...
如果你需要从多个Callable任务中获取结果,可以使用`FutureTask`。`FutureTask`是`Future`的一个具体实现,它同时也是一个`Runnable`,可以直接提交给ExecutorService。`FutureTask`的构造函数接受一个Callable对象...
在Java的多线程编程中,Spring框架提供了一种便捷的方式来管理和配置线程池,这就是`ThreadPoolTaskExecutor`。这个类是Spring对Java内置的`java.util.concurrent.ThreadPoolExecutor`的封装,允许开发者在Spring...
Java多线程设计模式是Java编程中至关重要的一个领域,它涉及到如何在并发环境中高效、稳定地执行多个任务。在Java中,多线程可以提高应用程序的响应速度和整体性能,尤其是在处理I/O密集型或计算密集型任务时。本...
2 如何使用FutureTask 、Future、Callable、线程池实现线程2.1 FutureTask + Callable实现多线程2.2 线程池+Future+Callable 实现多线程3 Runnable、Callable、Future和FutureTask之间的关系3.1 整体关系介绍3.2 ...
在多线程环境中,我们可以通过`FutureTask`将Callable转换为Runnable,这样就可以在ExecutorService中执行。`FutureTask`不仅可以代表一个Callable的结果,还可以用于取消任务或者检查任务是否完成。 提到...
在Java多线程编程中,CyclicBarrier、Callable、Future和FutureTask是四个重要的组件,它们各自提供了不同的功能,帮助开发者更好地管理和协调并发任务。接下来,我们将深入探讨这些组件的特性和使用方法。 首先,...
FutureTask 是 Java 中的一种非常重要的多线程设计模式,用于异步计算线程之间的结果传递。在 JDK 中,FutureTask 类是 Future 模式的实现,它实现了 Runnable 接口,作为单独的线程运行。在其 run() 方法中,通过 ...
通过合规策略对服务器进行监控,确保服务器的运行、帐号在服务器上的操作符合预设的规则。日志:收集、整理服务器的日志信息,提供给管理员查看,并作为异常判断、故障排查的依据。进程:监控服务器上的进程,并对...
Runnable、Callable、Future、FutureTask有什么关联.docx