java程序 避免重复启动的方法
http://www.cppblog.com/biao/archive/2010/12/23/137254.html
package swingtest; import java.io.File; import java.io.RandomAccessFile; import java.nio.channels.FileChannel; import java.nio.channels.FileLock;
import java.util.concurrent.TimeUnit; public class SingleApplication { // 在应用程序的main方法里调用此函数保证程序只有一个实例在运行. public static void makeSingle(String singleId) { RandomAccessFile raf = null; FileChannel channel = null; FileLock lock = null; try { // 在临时文件夹创建一个临时文件,锁住这个文件用来保证应用程序只有一个实例被创建. File sf = new File(System.getProperty("java.io.tmpdir") + singleId + ".single"); sf.deleteOnExit(); sf.createNewFile(); raf = new RandomAccessFile(sf, "rw"); channel = raf.getChannel(); lock = channel.tryLock(); if (lock == null) { // 如果没有得到锁,则程序退出. // 没有必要手动释放锁和关闭流,当程序退出时,他们会被关闭的. throw new Error("An instance of the application is running."); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws Exception { SingleApplication.makeSingle("single.test"); // 保证程序只有一个实例在运行. // 测试: 模拟一个程序正在运行5秒 System.out.println("Start"); System.out.println("Waiting 5 seconds."); TimeUnit.SECONDS.sleep(25); System.out.println("End"); } }
java程序 避免重复启动的方法的更多相关文章
- 在 win10 环境下,设置自己写的 程序 开机自动 启动的方法
原文:在 win10 环境下,设置自己写的 程序 开机自动 启动的方法 1.是登录自己用户时才能开机启 C:\Users\username\AppData\Roaming\Microsoft\Wind ...
- Java中多线程重复启动
在面试时候经常被问到多线程的相关问题: 今天在测试的时候发现下面的代码会抛出异常: java.lang.IllegalThreadStateException public static void m ...
- 9.9 Binder系统_Java实现_Android里java程序的编译启动
如果知道了进程号:通过ls /proc/进程号/task 可以看到所有线程 cat /proc/进程号/task/线程号/comm 可以达到线程名字(主线程是main,主线程号就是进程号) d ...
- 【Winfrom-禁止重复启动程序】 程序不能重复启动
using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy ...
- 【转】Java程序CPU飙升问题排查方法
windows环境下cpu飙升问题 线上某台runtime机器(windows Server)cpu报警,这种情况初步就是代码里面死循环了,先把机器下线了保证不再有新的任务分配进来,然而cpu使用依然 ...
- [WinForm]C# .net防止一个程序(WinForm)重复运行的方法。
最近比较忙,邮件预警系统暂停了没时间去处理,临时处理:直接执行exe文件! 可是问题来了: 我点击了两次,原来几乎在同时执行这个进程,我在程序中有线程时间睡眠2秒一次等待队列,打开进程果然两个MAIL ...
- java去除数组重复元素的方法
转载自:https://blog.csdn.net/Solar24/article/details/78672500 import java.util.ArrayList; import java.u ...
- java 程序消耗 cpu 100% 查找方法
问题原因:由于HashMap是非线程安全的,在多线程访问时,造成死循环. 查找问题方法: 1. top 找出最耗费cpu的进程号 如:27377 2. top -p 27377 -H 找出此进程下的所 ...
- 编写Java程序_定义两个方法,实现奇数偶数的判断,并计算和(有参数有返回值方法)
需求说明: 定义两个方法,在控制台输入一个数字,这两个方法可以求出1到该数字之间所有偶数之和.奇数之和,并将对应结果和返回.在main方法中调用该方法,并在控制台打印出结果.(有参数有返回值方法) 运 ...
随机推荐
- (七)zabbix监控nginx
1.agent端配置 1)nginx编译安装需要加上该选项--with-http_stub_status_module 2)修改nginx配置文件 #vim /usr/local/nginx/conf ...
- java8新特性学习:stream与lambda
Streams api 对 Stream 的使用就是实现一个 filter-map-reduce 过程,产生一个最终结果,或者导致一个副作用(side effect). 流的操作类型分为两种: Int ...
- Flyway对比Liquibase(转)
数据库迁移工具. 很多应用的运行是需要数据库支持的,而随着快速迭代,产品更替的节奏加快,除了产品本身需要不断更新以外,数据库也需要做出合适的管理了. 为什么需要数据库迁移管理 比如第一个版本的产品只包 ...
- linux下安装虚拟环境
安装pip $ wget https://bootstrap.pypa.io/get-pip.py $ python get-pip.pypython3 -m pip install --upgrad ...
- spring-boot + mybatis + mysql+shiro 整合
参考地址 https://blog.csdn.net/clj198606061111/article/details/82948757 https://blog.csdn.net/ityouknow/ ...
- Mockito 2 参数匹配器
Mockito 通过使用 equals() 这种自然的 Java 样式来校验参数值.有时候,当需要有其他一些灵活性的时候,你可能会要求使用参数匹配(argument matchers). 请参考下面的 ...
- B. Interesting Array(线段树)
B. Interesting Array time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Java线程之Dump
什么是线程dump Java Thread dump记录了线程在jvm中的执行信息,可以看成是线程活动的日志.Java线程转储文件有助于分析应用程序和死锁情况中的瓶颈. 如何获取线程转储文件 在这里, ...
- 在Latex中,拉普拉斯算子的小写符号l怎么表示
如下图所示的小写字母l,在Latex中不知道该如何表示,试过用\mathcal但是发现不行,因为\mathcal只支持大写字母. 正确方法: \ell
- Pycharm添加python2解释器
Anaconda3+python3环境下如何创建python2环境(win+Linux下适用,同一个anaconda下py2/3共存) conda info -e 查看python2的路径 Pycha ...