这可能是一个有点……非正统的问题。我有多个应用程序在同一个 JVM 中运行,每个应用程序都在自己的类加载器中。这些应用程序需要相互通信(虽然只有一点点),但我无法将自己的共享代码添加到这些应用程序共享的类加载器中,因此我需要使用标准 Java 运行时提供的工具来完成。
我沿着使用System
属性的思路思考。但是,很难使线程安全,尽管我想我可以synchronized
在实习长随机字符串上使用。
还有更多选择吗?
我想要的沟通如下。这可能会影响合适的选项。
- 每个应用程序按顺序将其名称放入共享队列中。
- 每个应用程序同时开始轮询队列以查看其自己的名称是否位于头部。如果是,它将执行一个长时间运行的 init 任务,然后从队列中提取其名称。