`
vvggsky
  • 浏览: 66899 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

防止JAVA程序重复启动的一个另类解决办法

    博客分类:
  • J2SE
阅读更多
http://www.iteye.com/topic/37732?page=1

控制这个程序在同一主机上只能启动一个实例

/**  
   * 检测系统是否只启动了一个实例  
   */  
  protected void checkSingleInstance() {   
    try {   
      srvSocket = new ServerSocket(srvPort); //启动一个ServerSocket,用以控制只启动一个实例   
    } catch (IOException ex) {   
      if(ex.getMessage().indexOf("Address already in use: JVM_Bind")>=0)   
        System.out.println("在一台主机上同时只能启动一个进程(Only one instance allowed)。");   
      log.fatal("", ex);   
      System.exit(0);   
    }   
  } 



//应用实例控制类
public class InstanceControl
{
  FileLock lock=null;
  //判断该应用是否已启动
  public boolean isRunning()
  {
    try
    {
      //获得实例标志文件
      File flagFile=new File("instance");
      //如果不存在就新建一个
      if(!flagFile.exists())flagFile.createNewFile();
      //获得文件锁
      lock=new FileOutputStream("instance").getChannel().tryLock();
      //返回空表示文件已被运行的实例锁定
      if(lock==null)return false;
    }catch(Exception ex){ex.printStackTrace();}
    return true;
  }

  public static void main(String[] args)
  {
    InstanceControl ic=new InstanceControl();
    if(ic.isRunning())
      JOptionPane.showMessageDialog(null,"已存在该程序的实例!","提示",JOptionPane.OK_OPTION);
    else
      MainClass.main(args);            
  }
}
分享到:
评论

相关推荐

    java实现防止表单重复提交

    服务器端避免表单的重复提交,利用同步令牌来解决重复提交的基本原理如下:(1)用户访问提交数据的页面,服务器端在这次会话中,创建一个session对象,并产生一个令牌值,将这个令牌值作为隐藏输入域的值,随表单一起发送到...

    雍俊海 Java程序设计教程 课后答案

    继承允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码复用。多态则使得子类对象可以替换父类对象,提高了程序的灵活性。 在雍俊海的教程中,可能会涉及异常处理,这是Java中处理错误的一种机制。...

    Eclipse运行TOMCAT 出现在a java exception has occurred的解决办法。

    Eclipse运行TOMCAT出现"a java exception has occurred"的解决办法 Eclipse是一款功能强大且广泛应用的集成开发环境(IDE),它支持多种编程语言,包括Java、C++、Python等。TOMCAT则是一款流行的Java Web服务器,...

    windows下启动java jar包的bat脚本

    windows下启动java jar包的bat脚本 javaw后台启动,jdk1.8或者更高,winserver 2016 经过测试

    一些比较有意思的Java小程序

    总之,"一些比较有意思的Java小程序"是一个很好的学习资源,它提供了实践和探索Java编程的多种途径。对于那些想要踏入Java世界的新手来说,这是一个很好的起点,也是不断提升编程技能的良好平台。

    生日祝福java程序代码

    在Java编程领域,创建一个生日祝福程序是一种常见的实践,它能为用户提供个性化和有趣的互动体验。这个名为"生日祝福java程序代码"的压缩包显然包含了多个功能模块,旨在为生日庆祝活动增添乐趣。以下是该程序可能...

    Java程序启动器 Java program launcher.exe

    解决双击 jar 和 class文件不能直接在windows命令提示符下运行的问题,不用手动修改注册表和环境变量,把文件的打开方式设为本程序即可

    Java Web程序设计教程.pdf

    标题《Java Web程序设计教程》与描述《Java Web程序设计教程 Java Web程序设计教程》中的知识点主要涵盖了Java Web应用开发领域的核心技术与实践。本书作为21世纪高等学校计算机规划教材,由范立锋与林果园共同编著...

    InstallShield 制作安装程序(java web程序)

    本文主要探讨如何使用InstallShield工具来创建一个针对Java Web程序的.exe安装程序,该程序不仅包含了JDK(Java Development Kit),还集成了Resin服务器。 InstallShield是一款功能强大的安装制作软件,它允许...

    windows 系统下启动与结束java的jar包的脚本(包括如何设置进程名称)

    为了方便地启动Java应用程序(通常是以`.jar`文件的形式存在),我们可以创建一个批处理文件(`.bat`文件)。这个文件会调用Java运行时环境(JRE或JDK)来执行指定的`.jar`文件。此外,我们还将介绍如何通过参数设置...

    200道Java程序设计练习题 PDF

    "200道Java程序设计练习题 PDF" 是一个宝贵的资源,旨在帮助学习者从初级到高级逐步提升Java编程技能。这份资料不仅适合初学者,也对有经验的Java开发者具有很高的参考价值,尤其是对于准备Java面试的人来说,它能够...

    java做的抽奖小程序

    这个“java做的抽奖小程序”就是这样一个实用工具,它利用Java编程语言实现,为用户提供了简单易用的抽奖功能。源码的提供不仅能让开发者深入理解抽奖程序的工作原理,还能够作为学习和参考的实例。 首先,我们来看...

    java桌面提醒程序源码

    总的来说,这个Java桌面提醒程序项目结合了Java编程、XML数据存储和GUI设计等多个方面的技术,为用户提供了一个便捷的个人事务管理工具。通过深入理解这些技术并进行实践,开发者不仅可以提升编程技能,还能掌握如何...

    164个完整的Java源程序代码

    这个"164个完整的Java源程序代码"集合提供了一个丰富的学习资源,涵盖了多种Java编程概念和技术。通过研究这些源代码,我们可以深入理解Java编程的核心原理,并提升实际编程技能。 首先,这些Java源代码可能包括了...

    经典的java小程序源代码合集

    总的来说,这个合集提供了一个全面的Java学习平台,涵盖了基础语法、图形用户界面设计、算法实现、游戏开发、网络编程等多个方面。对于想要深入理解和实践Java的开发者来说,这是一个不可多得的学习资源。通过分析和...

    JAVA程序与PLC之间的通信

    1. **OPC (OLE for Process Control)**:这是最常用的方式,它提供了一个标准接口,使得Java可以通过OPC服务器与PLC进行数据交换。Java中有很多开源的OPC客户端库,如J-OPC和Kepware等,可以方便地集成到项目中。 2...

    java网络蜘蛛程序及源码

    本资源提供了一个基于Java实现的网络蜘蛛程序及其源码,适用于学习和研究网络爬虫技术。这个程序依赖于Apache Commons HttpClient v3.0库,这是一个强大的HTTP客户端库,为Java开发者提供了丰富的功能来执行HTTP请求...

    如何把一个java程序打包成exe文件.doc

    **工具推荐:** `install4j` 是一个强大的、跨平台的Java安装程序生成工具。它可以轻松创建本地化安装程序,并支持灵活的JRE管理和部署选项。 **使用步骤:** 1. **创建发布树**: 使用install4j的图形用户界面来定义...

    java与c#MD5加密方法得到不一致解决办法

    java与c#MD5加密方法得到不一致解决办法,MD5加密后得到不一致结果

    java程序计算24点 递归算法 解决括号问题

    *计算24点 难点是递归算法归纳(双重for循环加递归啊 容易蒙) 以及加括号(完美... *程序逻辑竭力去除重复解(加法乘法交换律 不算重复) 但无法完全 最后只能以Set 解决问题 做了两天 接近完美 差在效率 10分 不喜勿下

Global site tag (gtag.js) - Google Analytics