2017-04-24 1 views
0

goは、ゴルーチン(スレッド)間の通信のためにunbuffered and buffered channelsの両方を提供します。 Javaでバウンドバッファとしてバッファリングされたチャネルを実装するのはstraightforwardです。GoのバッファなしチャネルをJavaでどのように実装できますか?

Goのバッファされていないチャネルでは、他のゴルーチンが受信しているときに1つのゴルーチンが送信されている必要があります。誰も私にJavaでそれを実装する方法を説明することはできますか?

+0

私はあなたがバッファリングせずにあるスレッドから別のスレッドに渡すSynchronousQueueを意味すると思います。一般的に、Java 8の場合は、複数のスレッドを使用するためにParallel Streamsを使い始める方がよいでしょう。 –

+1

@PeterLawreyありがとう。私の興味は学問的です。キューを使用したくない - 実装方法を理解したい。私に正しい用語を教えていただいたので、私はそれを調べます。 –

+0

あなたはそれを読むことができるはずです。注:同期キューは何も格納しないので、非常に単純です。 –

答えて

0

です。 JCSPの詳細はthis answerです。

Javaには、Goroutinesと同等のものはありません。 (かつては「緑の糸」があったが、放棄された)。したがってスレッドを代わりに使用すると、スレッドの数が興味を引くようになると(たとえば10,000を超えるように)、メモリの大量消費に耐えられます。すべてのJavaスレッドにはオペレーティングシステムスレッドと大きなスタックスペースが必要です。

関連する問題