java - 独立于平台的方式为进程启动单独的 JVM?
问题描述
我们想使用第三方库,其中有一些长期运行的计算。我们希望实现一种尽快取消计算的方法。
不幸的是,库本身不支持中断处理。我们可以覆盖/分叉计算以注意中断,但如果可能的话我们希望避免这种情况。
我在考虑一些选择。
在单独的线程上长时间运行计算,并且不推荐使用 thread.stop 方法:虽然它不打开任何特定资源(数据库连接、文件等),但它确实使用静态记录器等。因此,如果线程在日志记录过程中被蛮力停止,恐怕会损坏日志记录对象锁。它也可能使用其他静态物体,这些物体可能会在强制停止时损坏。
这就是为什么我正在考虑启动一个单独的子流程。进程蛮力停止的清理通常相对较好,因此这似乎是一个合理的解决方案。但是,我担心使用 ProcessBuilder 最终会将代码移动到本地区域(java 路径设置、禁用子进程的操作系统上的潜在设置可能是一个问题,等等......)。
所以我的问题是:有没有办法以独立于平台的方式启动一个单独的 JVM 来启动一个可以突然停止的长时间运行的进程?它不一定是核心 java 功能,第三方解决方案也可以工作。
解决方案
推荐阅读
- javascript - Node.js - 请求大量数据导致 ETIMEDOUT
- google-cloud-storage - 设置自定义 Google Storage Bucket 范围的 max-age 标头
- twilio - Twilio 视频 - 连接语音。无法进行双向通信
- reactjs - 如何让 React 组件从后端接收更新?
- php - 解析 JSON 多级数组并查找多级键值
- javascript - visual studio code html css javascript程序在我的浏览器中没有正确显示
- sql - SQL查询根据表中的时间戳列获取一个月或一周内的数据
- reactjs - 如何隐藏底部导航图标?
- php - 在 Google Cloud Storage 中创建“文件夹”对象
- c# - EventHandler 到响应式扩展,其中事件处理程序是短暂的生活方式