Java 关于在JGAP中使用多线程,有什么我应该知道的“陷阱”吗?

Java 关于在JGAP中使用多线程,有什么我应该知道的“陷阱”吗?,java,multithreading,synchronization,genetic-programming,jgap,Java,Multithreading,Synchronization,Genetic Programming,Jgap,我正在做一个基因编程项目,试图生成代表图像的GPs。我的方法是将图像分割成不同的独立部分,并让单独的线程对其执行演化任务 由于事情将是异步的,自然您也希望对象是独立的。问题是,我注意到JGAP中的某些对象实际上是共享变量,因此它们将在线程之间共享,这将导致很多问题。例如,我注意到所有具有相同名称的程序都是相同的,这意味着如果我想同时计算多个IGPProgram,我必须锁定变量,这可能会影响性能 我还注意到,如果您试图创建多个GPC配置,程序会抱怨您必须先重置它。所以在我看来,所有的GPP配置都是

我正在做一个基因编程项目,试图生成代表图像的GPs。我的方法是将图像分割成不同的独立部分,并让单独的线程对其执行演化任务

由于事情将是异步的,自然您也希望对象是独立的。问题是,我注意到JGAP中的某些对象实际上是共享变量,因此它们将在线程之间共享,这将导致很多问题。例如,我注意到所有具有相同名称的程序都是相同的,这意味着如果我想同时计算多个IGPProgram,我必须锁定变量,这可能会影响性能

我还注意到,如果您试图创建多个GPC配置,程序会抱怨您必须先重置它。所以在我看来,所有的GPP配置都是共享的,也就是说,你不能让多个线程同时创建多个配置,这是一个问题,因为创建GPP问题可能需要很多时间,而我正在创建很多GPP问题,所以我希望通过将工作拆分为多个线程来减少所花费的时间

在使用JGAP和线程时,我需要了解哪些问题?不幸的是,JGAP文档中没有太多涉及多线程,我希望能从那些可能有JGAP经验的人那里得到一些建议。

根据,JGAP确实支持多线程计算。然而,这并不意味着整个API/对象图是完全线程安全的。您是否有一个代码示例来演示您遇到的问题?我认为,如果你不进一步完善你的问题,你不会得到一个规范的答案


JGAP zip中的examples/src/examples/simpleboleanthread下有一个线程示例。

如果希望某些变量不跨线程共享,请进行一些小的更改,使代码支持多线程。你可以使用


谢谢,这是非常有用的信息,虽然我很久以前就已经完成了我在JGAP中的工作,但它对于多线程的未来使用是很好的。我已经有一段时间没有用JGAP完成我的项目了,我从5月份就已经完成了,所以我记不太清楚了,但总的来说,我在这里和那里发现了一些干扰多线程的共享变量,我只是确保锁定它们,或者如果可能的话找到一些实例化它们的方法。但这让事情慢了很多。阅读多线程示例确实有很大帮助。