首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从java启动exe

从java启动exe
EN

Stack Overflow用户
提问于 2012-02-14 13:16:34
回答 5查看 842关注 0票数 4

我理解以下是从java启动exe的典型代码

代码语言:javascript
运行
复制
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("some.exe"); 

或具有参数

代码语言:javascript
运行
复制
Process process = new ProcessBuilder("some.exe","param1","param2").start();

我有一个web应用程序包装了一个exe和用户可以执行这些请求。正如我所理解的,上述两种方法总是,在上创建一个新的流程,每个请求。我想避免这件事。

是否有方法,其中我保留一个可重用加载实例的,并在典型的并发场景中使用它们。我希望避免每一个用户请求启动一个新进程的情况。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-02-14 13:33:34

这取决于some.exe是否支持这一点。例如,命令ls (或dir)执行其操作并停止。没有办法告诉它“再做一次”-你需要一种方式,与进程和进程必须有一些接口(通常是stdio),您可以使用它远程控制。

如果外部进程无法执行,则必须在每个请求中创建一个新进程,或者必须在其他地方运行该进程,并将结果保存在缓存中一段时间,因此几个用户请求不必运行该进程就可以获得相同的数据。

因此,如果每个用户和每分钟收到100个请求,并且数据有一分钟的时间是可以的,那么您可以每分钟运行一次进程,并重用旧的结果。

票数 1
EN

Stack Overflow用户

发布于 2012-02-14 13:29:46

外部进程的启动成本很高,而不是创建Java Process

如果您的exe正在用协议实现某种服务器进行通信,您只需启动该协议并使用该协议即可。但这样的话这个问题就不会出现了。

如果它是一个简单的工具,例如处理一个文件的东西,您需要每次启动它,并依赖于(或调整)操作系统的/文件系统的缓存机制。没有办法暂停或重用它。

票数 1
EN

Stack Overflow用户

发布于 2012-02-14 13:21:51

你考虑过Apache共用池吗?对于这种情况,它应该足够好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9277528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档