Поток Java AWT зависает, если мои рабочие потоки не вызывают yield - PullRequest
0 голосов
/ 24 октября 2018

Это ожидаемое поведение под Linux?У меня есть несколько рабочих потоков, которые не держат никаких блокировок, но полностью используют все ядра процессора.Раньше я работал без перерыва, никогда не звонил Thread.yield().Это вызвало зависание потока событий AWT в его собственном мьютексе (или, я так думаю) до тех пор, пока рабочие не закончили.Даже отладчик затмения не мог остановить программу.Кажется, что планировщик не взаимодействует корректно с системной блокировкой X Window, используемой AWT.

Время от времени вызывая Thread.yield(), проблема устраняется, но я бы не стал полагаться на эту технику.потому что спецификация yield() ничего не гарантирует.Есть ли другие обходные пути?

Я использую JRE от Oracle для Java 8, но OpenJDK ведет себя так же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...