- 浏览: 176390 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (159)
- java常用 (28)
- Spring Security (0)
- tomcat (2)
- orcale (4)
- rmi (6)
- jvm (5)
- html (0)
- hibernate (0)
- javascript (5)
- log4j (5)
- struts (5)
- jdbc (0)
- jquery (0)
- json (0)
- jstl (0)
- jboss (0)
- JCaptcha (0)
- jpa (0)
- oscache (0)
- 项目管理 (8)
- ExtJs (10)
- 设计模式 (3)
- jsp (3)
- 错误归档 (1)
- maven (5)
- java多线程 (10)
- quartz (4)
- spring (9)
- memcache (3)
- java笔试面试 (3)
- xml (3)
- hadoop (5)
- velocity (2)
- jetty (3)
- http (1)
- linux (2)
- hbase (2)
- mysql (12)
- mybatis (8)
- web安全 (1)
- hive (2)
- 其他 (1)
最新评论
一个完整的Java应用程序,通常至少要有一个应用程序的结束点。对于一般程序来说,系统开发者根据需要和个人的偏好,会在程序结束位置,通过添加System.exit(0),或System.out(-1),来结束程序,或不加这些指令,让程序自然运行到结束。
如:下列典型代码
package untitled14;
/**
* This application is to demo how an applcation end
*/
public class Test {
public Test() {}
public static void main(String[] args) {
Test test1 = new Test();
//.................
System.out.println("hello world");
//Do something before system exit
System.exit(0);//也可以不写这句代码,让程序自然结束。
}
}
对于简单的应用系统,我们直接可以在System.exit(0)代码执行前,添加需要在应用程序退出前需要完成的工作,如:关闭网络连接,关闭数据库连接等。
然而,对于比较复杂的多线程应用,线程运行的状态较复杂,我们就很难预料程序何时结束,如何能在应用程序结束事件到来时,处理我们要做的工作呢?这就用到了Java对应用程序的退出的事件出处理机制。
对当前应用程序对象的获得,Java通过Runtime静态方法:Runtime.getRuntime()通过Runtime的 void addShutdownHook(Thread hook) 法向Java虚拟机注册一个shutdown钩子事件,这样一旦程序结束事件到来时,就运行线程hook,我们在实际应用时候,只要将程序需要完成之前做的一些工作直接通过线程hook来完成。具体演示代码如下:
/*****************************************************************************
本程序仅演示如何在Java应用程序中添加系统退出事件处理机制
*****************************************************************************/
package untitled14;
import java.util.*;
import java.io.*;
/**
* This application is used to demo how to hook the event of an application
*/
public class Untitled1 {
public Untitled1() {
doShutDownWork();
}
/***************************************************************************
* This is the right work that will do before the system shutdown
* 这里为了演示,为应用程序的退出增加了一个事件处理,
* 当应用程序退出时候,将程序退出的日期写入 d:/t.log文件
**************************************************************************/
private void doShutDownWork() {
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
try {
FileWriter fw = new FileWriter("d://t.log");
System.out.println("Im going to end");
fw.write("the application ended! " + (new Date()).toString());
fw.close();
}
catch (IOException ex) {
}
}
});
}
/****************************************************
* 这是程序的入口,仅为演示,方法中的代码无关紧要> ***************************************************/
public static void main(String[] args) {
Untitled1 untitled11 = new Untitled1();
long s = System.currentTimeMillis();
for (int i = 0; i < 1000000000; i++) {
//在这里增添您需要处理代码
}
long se = System.currentTimeMillis();
System.out.println(se - s);
}
}
在上述程序中,我们可以看到通过在程序中增加Runtime.getRuntime().addShutdownHook(new Thread()) 事件监听,捕获系统退出消息到来,然后,执行我们所需要完成工作,从而使我们的程序更健壮
发表评论
-
Java性能优化技巧
2013-03-30 11:19 742Java性能优化技巧 在JAVA程序中,性能问题的大部分原 ... -
java内部类的作用
2013-03-30 11:06 765java内部类的作用一、 ... -
StringTokenizer 用法
2013-03-25 09:29 1285StringTokenizer是一个用来分隔String的应 ... -
Java日志框架
2013-03-17 17:17 931Java日志框架 Log4j Ap ... -
java nio Buffer 中 compact的作用
2013-03-12 17:29 1733java nio Buffer 中 compact的作用 ... -
java annotation 入门
2013-03-11 11:23 768一. 最常见的annotation@Override:用在方法 ... -
Java中assert关键字的实现
2013-03-08 17:12 1078Java中assert关键字的实现 J2SE 1.4 ... -
java正则表达式
2013-03-07 08:42 692众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判 ... -
java对cookie的操作
2013-03-10 10:31 867java对cookie的操作 java对cookie的操 ... -
eclipse中的.project 和 .classpath文件的具体作用
2013-02-27 16:38 699eclipse中的.project 和 .cla ... -
Java中Split函数的用法技巧
2013-02-25 13:48 1595Java中Split函数的用法 ... -
如何把安全证书导入到java中的cacerts证书库
2013-02-21 11:21 1997如何把安全证书导入到java中的cacerts证书库 在项 ... -
java Comparable Comparator 接口
2013-02-19 15:58 7881.什么是Comparable接口 此接口强行对实现它的每 ... -
java环境变量配置
2012-08-28 21:51 719java环境变量配置 windows xp下配置JDK环 ... -
java 读取 doc poi读取word中的表.txt
2012-08-22 20:34 1744import java.io.File; import j ... -
java压缩和解压缩例子
2012-08-21 21:26 1083java压缩和解压缩例子 压缩时,在压缩文件夹中新建目录,en ... -
Java反射,根据类名创建带参数的实例
2012-08-21 21:26 2221public Object dynCreateClassIns ... -
java异常时如何执行
2012-08-21 21:26 685代码如下: public class Test{ publi ... -
java 读写txt文件
2012-08-21 21:27 896java 读写txt文件 读取 ... -
Java transient关键字
2012-08-21 21:27 700Java transient关键字 Volatile修饰的成员 ...
相关推荐
一个完整的Java应用程序,通常至少要有一个应用程序的结束点。对于一般程序来说,系统开发者根据需要和个人的偏好,会在程序结束位置,通过添加System.exit(0),或System.out(-1),来结束程序,或不加这些指令,让...
【标题】"记事本设计 JAVA程序设计"揭示了这个项目是使用Java编程语言实现的一个类似于Windows记事本的应用程序。在Java中,记事本的设计通常涉及到GUI(图形用户界面)的创建,使得用户可以编辑文本,改变字体样式...
通过以上分析可以看出,这个Java程序是一个典型的GUI应用示例,它演示了如何使用AWT库创建简单的图形用户界面,同时实现了基本的数据输入、处理和显示功能。尽管代码较为简单,但它涵盖了GUI编程的基本要素,对于...
在Java编程领域,GUI(图形用户界面)是创建桌面应用程序不可或缺的一部分。本示例程序"Java GUI简单程序"旨在教你如何构建一个基本的GUI界面,同时整合数据库连接、查询功能,并利用JTable来展示查询结果。这是一个...
【Java Swing GUI组件技术】是Java程序设计中用于构建图形用户界面的重要工具。在这个课程设计实训项目中,学生被要求使用Java Swing库来创建一个课程选课系统的图形用户界面(GUI)。具体来说,主要涉及以下几个...
2. **事件处理**:为了响应用户的操作,我们需要添加事件监听器。例如,我们可以使用`ActionListener`接口来处理按钮点击事件,当用户点击“打开”或“保存”时,对应的函数会被调用。 3. **文件I/O操作**:在...
在"Java Swing综合程序"中,你会学习如何布局这些组件,如何处理用户的交互事件,以及如何使用ActionListener和其他监听器来响应用户的操作。此外,你还会接触到布局管理器,如BorderLayout、GridLayout和FlowLayout...
这些程序示例不仅反映了Java编程语言在桌面应用程序开发中的应用,也揭示了面向对象编程(OOP)的核心概念,如类的继承、接口实现、事件处理机制,以及对用户输入和界面的响应。对于学习Java编程、了解Swing组件使用...
- **Eclipse工程**:Eclipse是一个流行的Java集成开发环境,用于编写、调试和打包Java应用。完成程序后,可以将其打包成JAR文件,便于用户下载和运行。 综上所述,实现Java定时关机小程序涉及多个Java核心概念和...
Java并发程序设计是Java编程技术中一个重要的领域,它涉及如何在多线程环境下编写有效且安全的代码。本文将从以下几个方面详细讲解Java并发程序设计的核心知识点: 1. 使用线程的经验:线程是并发程序的基础,包括...
3. **事件监听**:为了响应用户的点击操作,我们需要添加事件监听器。例如,当用户点击棋盘上的某一点时,程序应能检测到这个事件,并在合适的位置放置棋子。 4. **二维数组表示棋盘**:可以用二维数组来存储棋盘的...
此外,JFrame还有`setDefaultCloseOperation()`方法用于设置窗口关闭时的操作,如默认的退出应用程序。`setTitle()`用于设置窗口标题,`setSize()`和`setLocation()`分别用于设定窗口的大小和位置。 Swing中的组件...
开发者使用JDBC可以执行SQL语句、处理结果集、管理事务等,使得JAVA应用程序能够与数据库无缝集成。 5. **数据模型**:名片管理系统可能包含了用户、名片等实体的实体类,这些类封装了数据和相关操作,形成了对象化...
【Java 通讯录程序】是一个基于Java编程语言开发的可视化界面应用,主要用于管理和操作个人通讯录。这个程序包含了几个核心功能,包括联系人信息的添加、删除、修改、查询以及显示所有联系人信息。它旨在提供一个...
事件处理是 Java 图形用户界面中的一个重要概念,指的是在用户与图形用户界面交互时,程序对用户操作的响应。事件处理包括事件的产生、事件的监听和事件的处理三个方面。在 Java 中,事件处理是通过 Listener 接口...
此Java程序实现了一个简单的图形界面(GUI)购物车应用,用户可以通过点击按钮来添加商品到购物车,并在文本区域显示已选择的商品及其总价。 ### 2. 导入必要的包 程序开始通过导入`java.awt.*`和`java.awt.event....
总结来说,创建Java系统托盘图标程序涉及使用`TrayIcon`类、创建图标、构建弹出菜单、添加事件监听以及处理系统托盘事件。通过熟练掌握这些步骤,开发者可以让应用程序在后台静默运行,同时保持与用户的交互性,提高...
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...
本报告详细介绍了 Java 画图板应用程序的设计与实现,涵盖了程序的总体设计、详细设计与实现、系统测试等方面。报告中首先介绍了程序的设计要求和环境,包括程序的功能需求、开发平台和工具等。然后,报告详细介绍了...