`
javamaox
  • 浏览: 1616 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java单例应用程序,避免程序重复启动,文建锁实现

阅读更多

import java.io.*;
import java.nio.channels.*;

public class Test8 {
	public Test8() {
	}

	public static void main(String args[]) {
		System.out.println("Start application!");
		File f = null;
		RandomAccessFile raf = null;
		FileChannel fc = null;
		FileLock fl = null;
		FileWriter fr = null;
		try {
			f = new File("d:\\a.tmp");
			raf = new RandomAccessFile(f, "rw");
			fr = new FileWriter(f);
			fr.write("singleton");
			fr.close();
			fr = null;
			fc = raf.getChannel();
			fl = fc.tryLock();
		} catch (Exception ex) {
			ex.printStackTrace();
			System.out.println("create file failed!");
			try {
				if (fr != null)
					fr.close();
				if (fl != null)
					fl.release();
				if (fc != null)
					fc.close();
				if (raf != null)
					raf.close();
				if (f != null)
					f.delete();
			} catch (Exception e) {
				e.printStackTrace();
			}
			return;
		}
		System.out.println("start a singleton application!");
		try {
			System.in.read();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		try {
			if (fr != null)
				fr.close();
			if (fl != null)
				fl.release();
			if (fc != null)
				fc.close();
			if (raf != null)
				raf.close();
			if (f != null)
				f.delete();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
	
	
}


第二次运行时
Start application!
java.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:260)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)
at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:297)
at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:130)
at java.io.OutputStreamWriter.close(OutputStreamWriter.java:216)
at Test8.main(Test8.java:21)
create file failed!
分享到:
评论

相关推荐

    Java扫雷程序之马文建注释版

    一个用Java写的扫雷程序,内附中文注释和简单的开发说明文档,希望可以对大家有所帮助。 程序地址:http://code.google.com/p/saolei/

    微服务的实践与思考-左文建

    微服务架构是一种架构模式,它将大型的应用程序分解为一套更小的服务。这些服务通过定义良好的接口与协议进行通信,通常基于网络请求。微服务架构的核心思想是围绕业务能力组织系统,并通过可部署的、独立的业务服务...

    人事管理外文文建

    标题中的“人事管理外文文建”表明这是一个关于人力资源(人事)管理的外文资料集合,可能包含了国外在人事管理领域的理论、实践和案例。描述中的提示“做管理系统的同学可以参考一下”,暗示了这些文档可能包含有关...

    01_搭建项目搭架SSM.和mybatis_generator自动生成mapper与model

    这个过程通常用于快速初始化一个基于Java的Web应用程序,以实现业务逻辑和数据访问层的高效管理。 1. **Spring框架**:Spring是一个全面的开源Java平台,它提供了一个框架来管理应用对象的生命周期和依赖关系。在...

    徐文建河北省大型标志性文化娱乐产品开发思路与创意策划.doc

    徐文建河北省大型标志性文化娱乐产品开发思路与创意策划.doc

    新建文件夹 (2)_新建文件2播放_新建文件夹2_SDcardaudio_

    从给定的标题“新建文件夹 (2)_新建文件2播放_新建文件夹2_SDcardaudio_”和描述“实现SD卡音乐播放器功能”,我们可以推断出这个项目的目标是创建一个能播放存储在SD卡上的音频文件的应用程序。 首先,我们需要...

    煤矿井下掘进工作面供电系统设计的研究与应用

    在煤矿井下掘进工作面供电系统设计的研究与应用中,主要涉及了供电系统的优化、供电网络的复杂性、供电系统稳定性和可靠性的保障措施、掘进设备和用电负荷的统计分析、供电系统设计原则及应用、以及针对特定供电系统...

    新建文件夹 (2)_featurenrq_workerb5w_pwm控制直流有刷电机可调速_mudoqg_新建文件夹2_

    压缩包内的“新建文件夹 (2)”可能包含了项目的源代码、设计文档、数据手册、电路图等资源,这些资料可以帮助我们更深入地理解这个项目是如何实现的,以及如何将这种技术应用到实际的电机控制系统中。 总的来说,这...

    MASTERCAM9.1后处理

    本后处理适用于Mastercam9.1对应funuc系统 三菱系统 精简程序

    CCD通讯,使用的是C#

    在IT行业中,CCD(Charge Coupled Device)通常指的是电荷耦合器件,它是一种光敏传感器,广泛应用于图像采集设备如相机、扫描仪等。然而,在这里提到的"CCD通讯"似乎是指使用C#编程语言实现的一种特定的通讯协议...

    基于FPGA的三相电源发生器的研制.pdf

    总之,这项研究展示了FPGA在实现定制化电子系统设计中的潜力,特别是在要求高质量波形输出和高系统性能的应用中。通过该系统的设计和实现,不仅为工业实验提供了可靠的电源解决方案,还推动了可编程逻辑器件在数字...

    数值分析与算法 喻文健著

    数值分析与算法 喻文健著 pdf

    金士顿G3U盘量产工具

    一、生成配置文建 1、用到的U盘芯片检测软件:ChipGenius 和GetInfo ,用软件检测U盘,得到U盘信息。图中所标识的地方一定要主要记录哦!在后面量产的时候用得上。 2、根据检测的结果,我们就要用到量产工具了:...

    学校消防演练方案.doc

    演练前还会进行充分的准备工作,包括召开班会,让学生熟悉应急避震和防火的正确方法,明确演练的意义、程序、时间和纪律。此外,还设有专门的领导小组和疏散线路沿线工作组,以确保演练过程的顺利进行和学生安全。 ...

    365wenjianfenge-v3.0.zip

    《365文建分割器v3.0:高效日志管理工具》 在IT行业中,日志管理是一项至关重要的任务,特别是在系统监控、故障排查和数据分析等方面。"365wenjianfenge-v3.0.zip" 提供了一款高效、定制化的日志文件分割工具,针对...

    学校消防演练方案..doc

    演练由学校的演练领导小组负责,包括组长张国军,副组长屈双林,以及邓云红、韦堂银、江顺兰、王智东、何源、周勇、孙利云和张文建等成员。演练定于2018年3月26日下午辅导课时间进行。 演练内容包括两个主要部分:...

    论文研究-基于VHDL的综合计时系统 .pdf

    基于VHDL的综合计时系统,周雷,许文建,本文介绍了基于VHDL语言的综合计时系统。该计时系统实现年、月、日、星期以及时间的计时,并通过调整键实现对时间的调整。

Global site tag (gtag.js) - Google Analytics