如何确保在同一时间只有一个应用程序在运行

时间:2022-01-28 19:38:37
我做了一个控制台应用程序,
现在要怎么才能确保只有一个应用程序在运行呢?
就是说,当控制台应用程序启动时先检测是否已经启动,如果启动了,那么后面启动的应用程序退出,
如果未启动,那么继续执行。

要怎么确保这样的运行呢?
我原来想用端口监听,倾听你们更好的方法。

9 个解决方案

#1


这是操作系统的问题,

采用  先来先服务的算法

#2


互斥体。。。 。。。
Mutex~

不过要调用JNI了。。。

#3


用jsmooth包装一下~~~~

#4


你可以看看《Swing Hacks》Hack 84:Construct Single-Launch Applications

#5


不用这么麻烦
有个简单的做法

程序启动的时候绑定一个端口,
其他程序启动的时候先测试这个端口,如果已经被绑定了就说明已经有在跑的了

#6


看5楼,觉得可行。

#7


楼主的方法不失为一个好的解决方案。如果将这个问题视为进程间同步问题,也可以采用信号量的方法来实现。将同步信号存放于文件中。
由于我的应用运行于UNIX环境,因此判断应用是否已经启动的操作,我是放在Shell脚本里的(通过检测端口使用情况),但发现应用已起后的策略和楼主不同。我是把已起的所有应用都杀掉,然后再继续运行当前进程。这样便于应用发布,否则必须都先杀掉应用再运行启动脚本。

#8


这是最明白不过的了,用线程同步

#9


已实现,就是监听端口

#1


这是操作系统的问题,

采用  先来先服务的算法

#2


互斥体。。。 。。。
Mutex~

不过要调用JNI了。。。

#3


用jsmooth包装一下~~~~

#4


你可以看看《Swing Hacks》Hack 84:Construct Single-Launch Applications

#5


不用这么麻烦
有个简单的做法

程序启动的时候绑定一个端口,
其他程序启动的时候先测试这个端口,如果已经被绑定了就说明已经有在跑的了

#6


看5楼,觉得可行。

#7


楼主的方法不失为一个好的解决方案。如果将这个问题视为进程间同步问题,也可以采用信号量的方法来实现。将同步信号存放于文件中。
由于我的应用运行于UNIX环境,因此判断应用是否已经启动的操作,我是放在Shell脚本里的(通过检测端口使用情况),但发现应用已起后的策略和楼主不同。我是把已起的所有应用都杀掉,然后再继续运行当前进程。这样便于应用发布,否则必须都先杀掉应用再运行启动脚本。

#8


这是最明白不过的了,用线程同步

#9


已实现,就是监听端口