Go предлагает как небуферизованные и буферизованные каналы Для общения среди горутин (тем). Это прямой реализовать буферизованные каналы как ограниченные буферы в Java.

Небуферизованные каналы Go требуют, чтобы одна подпрограмма отправляла при получении другой подпрограммы. Может кто-нибудь объяснить мне, как реализовать это в Java?

0
Ellen Spertus 24 Апр 2017 в 22:28

2 ответа

Лучший ответ

В Java вы можете использовать SynchronousQueue , источник для Java 8 здесь

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/concurrent/SynchronousQueue.java?av=f

1
Peter Lawrey 24 Апр 2017 в 20:15

Я предлагаю вам также ознакомиться с JCSP библиотека. Более подробная информация о JCSP содержится в этом ответе.

У Java нет ничего, что эквивалентно Goroutines, увы. (Когда-то давно были «Зеленые нити», но они были заброшены). Поэтому, если вы вместо этого будете использовать потоки, вы перенесете большой объем памяти, как только число потоков станет интересным (например, более десяти тысяч). Каждый поток Java требует потока операционной системы и большого пространства стека.

0
Community 23 Май 2017 в 12:34