首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>java>java企业应用>正文

JAVA高级:Java中限时线程回调方式的实现

http://www.oklinux.cn  2008-03-07  来源: 赛迪网 baocl  会员收藏  游客收藏  【 】 

线程回调方式我们已经在"使用回调和线程处理一个耗时响应过程"文中进行了讲述,但是有些情况下用户希望在指定时间内返回一个结果,免得无休止的等待下去。这时我们需要使用"限时线程回调方式",它在原有线程回调的基础上加上了一个Timer以计算消耗的时间,如果时间期限到了任务还没有执行完的话即中断线程,示例代码如下:

package com.sitinspring;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.Timer;/** *//** * 定时回调线程类 *  * @author sitinspring([email protected]) *  * @date 2007-11-6 */public class TimedCallBackThread implements Runnable {    // 一秒的毫秒数常量  private final static int ONE_SECOND = 1000;    // 限制时间,以秒为单位  private final int waitTime;    // 已经流逝的时间  private int passedTime;  private Timer timer;  private Thread thread;  private MvcTcModel model;  private MvcTcView view;  public TimedCallBackThread(MvcTcModel model, MvcTcView view, int waitTime)
{ this.model = model; this.view = view; this.waitTime = waitTime; this.passedTime = 0; // 创建并启动定时器 timer = new Timer(ONE_SECOND, new ActionListener() { public void actionPerformed(ActionEvent evt) { timeListener(); } }); timer.start(); // 创建并启动线程来完成任务 thread = new Thread; thread.start(); } private void timeListener() { passedTime ; // 动态显示状态 int modSeed = passedTime % 3; if (modSeed == 0) { view.getLabel2().setText("响应中"); } else if (modSeed == 1) { view.getLabel2().setText("响应中.."); } else if (modSeed == 2) { view.getLabel2().setText("响应中."); } // 如果流逝时间大于规定时间则中断线程 if (passedTime > waitTime) { passedTime = waitTime; thread.interrupt(); } } public void run() { while (passedTime < waitTime) { try { Thread.sleep(10000);// 模拟一个耗时相应过程 timer.stop();// 任务完成,停止Timer view.getLabel2().setText(model.getText2()); } catch (InterruptedException ex) { timer.stop();// 线程中断,停止Timer view.getLabel2().setText("在指定时间内未响应"); } catch (Exception ex) { ex.printStackTrace(); } return; } }}


上一篇:超线程多核心下Java多线程编程彻底分析   下一篇:以全局的固定顺序获取多个锁来避免死锁


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·超线程多核心下Java多线程编程彻底分析
·以全局的固定顺序获取多个锁来避免死锁
·进阶:Java Reflection (JAVA反射)详解
·开发JAVA编程中字符串分割的两种方法
·Java理论和实践:用软引用阻止内存泄漏
·JBuilder7 Weblogic7 mysql开发EJB配置
·JAVA入门基础:区分引用类型和原始类型
·在Web项目中用到JNI时应该注意的问题
·表现层框架Struts/Tapestry/JSF比较
·学习心得 - JSP处理异常及一些高级主题
·Java程序开发过程中异常处理的特殊情况
·架构与模式:多线程有几种常用的编程模型
·Java SE6调用Java编译器的两种新方法
·建立JSP操作用以提高数据库访问的效率
·使用JAVA中的动态代理实现数据库连接池
·Weblogic下使用jsp查询的Entity Bean
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Java SE6调用Java编译器的两种新方法
·表现层框架Struts/Tapestry/JSF比较
·在Web项目中用到JNI时应该注意的问题
·JBuilder7 Weblogic7 mysql开发EJB配置
·进阶:Java Reflection (JAVA反射)详解
·以全局的固定顺序获取多个锁来避免死锁
·超线程多核心下Java多线程编程彻底分析
·开发JAVA编程中字符串分割的两种方法
·Java理论和实践:用软引用阻止内存泄漏
·JAVA入门基础:区分引用类型和原始类型
·学习心得 - JSP处理异常及一些高级主题
·Java程序开发过程中异常处理的特殊情况
  阅读排行
·Commons-logging Log4j 的入门指南
·进阶:Java Reflection (JAVA反射)详解
·服务器及中间件:TomCat 多虚拟站点配置
·开发框架:一篇关于SSH架构的简单总结
·使用JAVA中的动态代理实现数据库连接池
·数据库相关:Log4j和JDBMonitor的比较
·Java语言:敏捷开发技巧-消除代码异味
·架构与模式:多线程有几种常用的编程模
·Java SE6调用Java编译器的两种新方法
·jboss4.0下使用MySql数据源的设置方法
·开发框架-Struts里过滤器的简单使用
·表现层框架Struts/Tapestry/JSF比较
·在Web项目中用到JNI时应该注意的问题
·Java 安全:Java 语言的 XML 验证 API
·Hibernate源码中几个包的作用简要介绍
网摘收藏: