java程序在一个电脑上只启动一次,只开一个进程
方案1:
单进程程序可以用端口绑定。程序启动的时候可以尝试看该端口是否已经被占用,如果占用则程序已经启动。
方案2:
你可以在java程序中创建一个隐藏文件,程序退出的时候删除这个文件。这样在程序启动的时候,你判断是否存在这个文件,如果存在说明已经启动。

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.channels.FileLock; /**
* FileLockManager 文件锁管理
*
*/
public class FileLockManager { private FileLock fileLock = null; private File file = null; private RandomAccessFile randomAccessFile = null; public FileLockManager(String fileName) {
this.file = new File(fileName);
} public FileLockManager(File file) {
this.file = file;
} /**
* 文件加锁并创建文件
*
* @return
* @throws IOException
*/
public boolean Lock() throws IOException {
if (!this.file.exists()) {
this.file.createNewFile();
this.randomAccessFile = new RandomAccessFile(this.file, "rw");
this.fileLock = this.randomAccessFile.getChannel().tryLock();
if (this.fileLock.isValid()) {
return true;
} else {
return false;
} } else {
return false;
} } /**
* 解锁并删除文件
*
* @return
* @throws IOException
*/
public boolean unLock() throws IOException {
if (!this.file.exists()) {
return true;
} else {
if (this.fileLock != null) {
this.fileLock.release();
}
if (this.randomAccessFile != null) {
this.randomAccessFile.close();
}
if (this.file.delete()) {
return true;
} else {
return false;
} } } /**
* @return Returns the fileLock.
*/
public FileLock getFileLock() {
return this.fileLock;
} /**
* @param fileLock
* The fileLock to set.
*/
public void setFileLock(FileLock fileLock) {
this.fileLock = fileLock;
} }

java程序在一个电脑上只启动一次,只开一个进程的更多相关文章
- java程序怎么在一个电脑上只启动一次,只开一个进程
目录 <linux文件锁flock> <NIO文件锁FileLock> <java程序怎么在一个电脑上只启动一次,只开一个进程> 方案1: 单进程程序可以用端口绑定 ...
- java程序在没有java环境的电脑上执行的方法(关键词jar,exe)
可以让你写的java程序在别人没有任何java配置以及环境的情况下执行 写好程序 在程序对应的package上右键->export->java->Runnable JAR file- ...
- 怎么在一台电脑上同时启动多个tomcat
怎么在一台电脑上同时启动多个tomcat? 应用场景: 一台电脑,需要同时部署多个tomcat,用于部署不同的系统 分布式系统,一个系统,同时需要开启多个tomcat,因为分布式系统可能会有多个war ...
- 如何在同一台电脑上部署多个tomcat实现多个tomcat在同一台电脑上同时启动
有时候我们在开发的过程中难免会遇到需要在同一台电脑部署多个tomcat,且还要他们能够都单独同时启动不会对其他的tomcat造成影响 本文就简单记录一下,如何来实现这个骚操作 1. 下载tomcat的 ...
- 如何在一个电脑上使用两个github账号
问题描述:公司电脑上默认使用的是公司的github账号,如果希望写一些代码放到个人的github账号上,就需要配置让一个电脑上可以使用两个github账号 原理:管理两个SSH key 1.生成两个S ...
- Java程序在Linux上运行虚拟内存耗用很大
突然集群的2个节点挂了,通过top查看, 虚拟内存22G, 通过 pmap -x 8 | grep anon 一大堆64M Linux下glibc的内存管理机制用了一个很奇妙的东西,叫arena.在g ...
- 如何在一个电脑上同时使用两个Git的账号
前言 又需要登录公司的账号,又想在电脑上使用自己的账号. 实现 首先是git config方面的设置,要取消掉原本对于git账号的全局设置. git config --global --unset u ...
- java 程序从linux 上接收不可见字符
近期在写一个简单的小java程序,希望在运行java 程序时,从shell 中接收参数,并且参数的内容为不可见字符. 开始时还觉得可以使用"\"之类的转义符来写,后来发现java程 ...
- 怎样从 Google Play 下载 Android 程序到电脑上
想必非常多朋友也有须要通过电脑下载Google Play的apk到电脑端的时候,事实上非常easy,推荐一个站点:APK Downloader APK Downloader 是一个能直接从网页下载Go ...
随机推荐
- 编程 MD(d)、MT(d)编译选项的区别
转:http://blog.csdn.net/nodeathphoenix/article/details/7550546 1.各个选项代表的含义 编译选项 包含 静态链接的lib 说明 /MD _M ...
- oracle 查看表是否存在、包含某字段的表、表是否包含字段
表是否存在: select count(*) from user_tables where table_name = #{tablename} 包含某个字段的表 select * from user_ ...
- hadoop推荐
hadoop官网 我以Hadoop 2.7.3为例. hadoop 2.7.3 官网 . 用的操作系统是64bit Ubuntu14.04. 其中我们还可以学习 Apache Maven Proje ...
- Start Developing Mac Apps -- App Design 应用程序设计
App Design Apps do not exist on their own. They not only interact seamlessly with their environment, ...
- git cherry-pick简介(转载)
转自:http://hubingforever.blog.163.com/blog/static/1710405792012587115533/ 本文编辑整理自: http://sg552.iteye ...
- 关于js变量作用域
先来看一段代码 var ss=1;function sss(){ alert(ss);}$(document).ready(function(){ var ss=2; alert(ss); sss() ...
- Unity Transform常识(转)
Variables position: Vector3 物体在世界坐标中的位置. transform.position=Vector3(10,10,10)//把物体放到(x=10,y=10,z= ...
- Luogu P1607 庙会班车【线段树】By cellur925
题目传送门 据说可以用贪心做?算了算了...我都不会贪.... 开始想的是用线段树,先建出一颗空树,然后输进区间操作后就维护最大值,显然开始我忽视了班车的容量以及可以有多组奶牛坐在一起的信息. 我们肯 ...
- pyinstaller模块
应用场景: 1 把一些python脚本推广到更多机器上运行,但无法保证他们都有安装python解释器,所以,打包可以免去这一障碍 win: 安装: 在cmd中运行pip install pyinsta ...
- 在sz
在大城市,sz, 每天骑单车去公交车站. 每天用高德地图 坐快线巴士 车上下班要3个小时. 用guomei 的回收管家 回收 旧空调. 我在kfc 看书 在班车上睡觉/眯眼 在办公室睡觉,看书,工作 ...