0

我正在开发一个 Eclipse 插件(一个构建器),我想使用一个不是线程安全的库。当然,我想并行运行该库中的代码。Eclipse 插件是否有标准方式在新的子 jvm 中运行代码(跨平台;我不想维护 windows/mac/linux/... 版本)?我很高兴地说这个功能的内存需求会很大(多个演出很好)。

4

2 回答 2

1

我建议使用私有启动配置。我们在 Grails-IDE 中广泛执行此操作。我建议你看看源代码。我们的基础设施可能超出您的需要,但它可以让您获得灵感。

您只需为外部进程创建启动配置并启动它。了解我们所做工作的一个好地方是:

https://github.com/SpringSource/grails-ide/blob/master/org.grails.ide.eclipse.core/src/org/grails/ide/eclipse/commands/GrailsExecutor.java

syncExec()方法获取特定 grails 命令和特定项目的启动配置,然后为系统进程和侦听器定制它。最后,命令同步启动。这对我们来说效果很好。

于 2013-01-07T05:48:13.570 回答
0

如果您有一个不是线程安全的库,那么您需要确保该库与正确的同步一起使用以避免任何问题。一种可能适合您的方法是确保该库的所有使用都发生在单个线程中。在您的情况下可能更乏味的另一种方法是使用该库的所有方法都是同步的。在与您类似的情况下,我总是更喜欢前者。

您可以创建一个特殊的线程来负责所有需要您的库的操作。根据您的需要,您可以让所有调用异步或同步,但您需要实现某种回调机制才能获得结果。实现此目的的一种便捷方法是使用Executor接口。实现一个执行器,以确保所有任务按照它们被推送到执行器的顺序在同一个线程中运行。的文档Executor有一个很好的例子可以让你开始。您可以向该示例添加其他方法以进行同步执行,甚至可以添加同步返回结果的执行方法。为此,您也可以查看Callable界面。

于 2013-01-07T11:48:54.033 回答