1

javanet线程安全吗?我无法以一种或另一种方式找到任何文档。即使它是线程安全的,是否有某种“互斥锁”阻止了所有线程的完全使用?

当我尝试并行运行 javonet 时,它确实工作了,但是 CPU 使用率并没有显着增加超过顺序负载(即在 10CPU 系统上,并行负载的 CPU 使用率徘徊在 20% 左右,这只是顺序负载的两倍CPU 负载为 10%);然而,如果我运行 10 个版本的完全相同的顺序代码(使用了 javanet),我实现了 100% 的 CPU 使用率......所以它“感觉”就像 javanet 必须有一些阻止完全并行使用的内置互斥锁。

4

1 回答 1

0

Javonet 是线程安全的。您只需要遵循编写多线程应用程序的标准实践,Javonet 就会负责正确执行您的代码。

Javanet 创建新的相应 .NET 线程来调用 Java 线程。此外,如果从其他线程 Javonet 调用回调、事件和委托的另一种方式,则会在 Java 端创建相应的线程。一旦调用线程完成,Javonet 将关闭另一端的线程。

如果相应的线程已经存在,Javonet 将重新加入有效线程。

Javonet 在访问对象实例时使用内部互斥锁/读写锁,一些缓存集合和类型取决于您的 Java 代码可能会影响并行化能力。

于 2018-04-30T21:39:36.483 回答