栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何允许一次只运行一个Java程序实例?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何允许一次只运行一个Java程序实例?

我认为您的建议是在启动应用程序时打开端口以进行监听。

这很容易做到,而且您在关闭应用程序时无需担心清理它。例如,如果您写入文件,但随后有人使用任务管理器终止进程,则该文件不会被删除。

另外,如果我没有记错的话,没有从JVM内部获取Java进程的PID的简便方法,因此不要尝试使用PID来制定解决方案。

这样的事情应该可以解决问题:

private static final int PORT = 9999;private static ServerSocket socket;private static void checkIfRunning() {  try {    //Bind to localhost adapter with a zero connection queue     socket = new ServerSocket(PORT,0,InetAddress.getByAddress(new byte[] {127,0,0,1}));  }  catch (BindException e) {    System.err.println("Already running.");    System.exit(1);  }  catch (IOException e) {    System.err.println("Unexpected error.");    e.printStackTrace();    System.exit(2);  }}

此示例代码与之明确绑定

127.0.0.1
,应避免任何防火墙警告,因为此地址上的所有流量都必须来自本地系统。

选择端口时,请避免使用“知名端口 ”
列表中提到的端口。理想情况下,应该在文件中或通过命令行开关使使用的端口可配置,以防发生冲突。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/399941.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号