Является ли JavoNet поточно-безопасной библиотекой и, что более важно, позволяет ли она использовать все потоки? - PullRequest
0 голосов
/ 30 апреля 2018

Является ли javonet многопоточным? Я не мог найти какую-либо документацию, так или иначе. Даже если это потокобезопасный, существует ли какой-то «мьютекс», который предотвращает полное использование всех потоков?

Когда я пытался запустить javonet параллельно, он работал, но загрузка ЦП значительно не превышала последовательной нагрузки (т. Е. В системе с 10 ЦПУ загрузка ЦП колебалась примерно на 20% при параллельной загрузке, что было всего лишь удвоить последовательную загрузку процессора (10%); однако , если я запустил 10 версий точно такого же последовательного кода (который использовал javonet), я достиг 100% загрузки ЦП .... так что "javonet" должен иметь некоторые встроенные мьютексы, которые предотвращение полного параллельного использования.

1 Ответ

0 голосов
/ 01 мая 2018

Javonet является поточно-ориентированным. Вам просто нужно следовать стандартным методам написания многопоточных приложений, а Javonet позаботится о правильном выполнении вашего кода.

Javonet создает новый соответствующий поток .NET для вызова потоков Java. Также другой способ для обратных вызовов, событий и делегатов при вызове из другого потока Javonet создаст соответствующий поток на стороне Java. После завершения вызывающего потока Javonet закроет поток на другой стороне.

Если соответствующий поток уже существует, Javonet присоединится к действующему потоку.

Javonet использует внутренние взаимные блокировки / блокировки чтения при доступе к экземплярам объектов, некоторым коллекциям и типам кэширования, что в зависимости от вашего Java-кода может повлиять на возможности распараллеливания.

...