問題タブ [java.util.concurrent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
4155 参照

java - javaHashMapのConcurrentModificationExceptionプログラム

コード:

このコードを実行すると、以下の例外が発生します。

この行はCountUpdater.java:58です:

ConcurrentHashMap私はこのプログラムをグーグルで検索します、私はプレーンの代わりに使用できることを知っていますHashMap

しかし、私は知りたいのですが、なぜ私は:を使用しています

HashMapの新しいインスタンスを作成するには、それでもスローしConcurrentModificationExceptionますか?

使用しないで修正する方法はConcurrentHashMap

手伝ってくれてありがとう :)

0 投票する
3 に答える
28232 参照

java - BlockingQueue の実装: SynchronousQueue と LinkedBlockingQueue の違いは何ですか

これらのBlockingQueueの実装を見て、それらの違いを理解できません。これまでの私の結論:

  1. SynchronousQueueは必要ありません
  2. LinkedBlockingQueueは FIFO を保証します。BlockingQueueを FIFO にするには、パラメーター true で作成する必要があります
  3. SynchronousQueueは、ほとんどのコレクション メソッドを中断します (contains、size など)。

では、いつSynchronousQueueが必要になるのでしょうか? この実装のパフォーマンスはLinkedBlockingQueueより優れていますか?

さらに複雑にするために...なぜExecutors.newCachedThreadPoolは SynchronousQueue を使用するのに、他のもの ( Executors.newSingleThreadExecutorおよびExecutors.newFixedThreadPool ) は LinkedBlockingQueue を使用するのでしょうか?

編集

最初の疑問は解決しました。しかし、他の人 ( Executors.newSingleThreadExecutorExecutors.newFixedThreadPool ) が LinkedBlockingQueue を使用しているときに、 Executors.newCachedThreadPoolが SynchronousQueue を使用する理由はまだわかりません。

私が得たのは、SynchronousQueue を使用すると、空きスレッドがない場合、プロデューサーがブロックされるということです。ただし、スレッドの数は事実上無制限であるため (必要に応じて新しいスレッドが作成されます)、これは決して起こりません。では、なぜ SynchronousQueue を使用する必要があるのでしょうか。

0 投票する
2 に答える
1133 参照

java - マルチスレッドでのConcurrentLinkedQueueの使用

プロジェクトの一環として、固定数のスレッドを含むスレッドプールを作成する必要があります。スレッドが異なるプロセスに割り当てられるたびに、スレッドと一緒にその数のセッションも割り当てる必要があります。ConcurrentLinkedQueue(固定の)を使用したいサイズ)スレッドが完了したときにセッションをキューに戻し、他のプロセスで使用できるようにするためにセッションを保存します。要件が明確になっていることを願っています...誰かが私にいくつかのquidelineを与えることができますかこれをどのように実装できるか..?ConcurrentLinkedQueueをどのように使用できるか..?

0 投票する
1 に答える
2155 参照

java - 並行Java1.5以降のアクティブオブジェクトパターン

クラスを使用して並行Javaでアクティブオブジェクトパターンを開発しようとしています。java.util.concurrent

とを使用して説明しClientますServer。サンプルServerは次のとおりです。

そしてサンプルClient

また、Messageカプセル化の例は次のとおりです。

そして、実行中のコードのサンプル:

メッセージを伝えるために、実装の詳細をいくつか削除しました。

ここで問題となるServerstateは、の場合true、着信メッセージは待機する必要がありawait、現在のメッセージで呼び出されます。ただし、IllegalMonitorStateExceptionこれは、現在のメッセージが待機する現在のスレッドを所有していないことを意味します。Serverただし、現在のメッセージはとそのスレッドプールで呼び出されるため、現在のメッセージは現在の実行スレッドにもアクセスできるため、これは奇妙だと思います。

アイデアや提案、またはを使用したこのパターンの既知の実用的な実装に最も感謝しますjava.util.concurrent。前もって感謝します。

更新:このブログ投稿
で展開できるソリューションについて説明しました。お役に立てば幸いです。

0 投票する
7 に答える
3962 参照

java - 1 つの Java スレッドが別のスレッドの結果を待つようにするにはどうすればよいですか?

別のスレッドの結果をスレッドに待機させる必要があることがよくあります。java.util.concurrent でこれをサポートする必要があるようですが、見つかりません。

Exchangerは私が話していることに非常に近いですが、双方向です。スレッド A がスレッド B で待機するだけで、両方が相互に待機することはありません。

はい、CountDownLatch または Semaphore または Thread.wait() を使用して、計算の結果を自分で管理できることはわかっていますが、便利なクラスがどこかに欠けているようです。

私は何が欠けていますか?

アップデート

0 投票する
4 に答える
8935 参照

java - JDK6.0または他のライブラリにConcurrentLinkedHashSetはありますか?

私のコードスローは例外に従います:

私はConcurrentLinkedHashSetそれを修正したい、

しかし、私はでしか見つかりませんでしConcurrentSkipListSetjava.util.concurrent、これはTreeSet、ではありませんLinkedHashSet

JDK6.0ConcurrentLinkedHashSetに簡単にアクセスする方法はありますか?

手伝ってくれてありがとう :)

0 投票する
8 に答える
211823 参照

java - Javaにミューテックスはありますか?

JavaにMutexオブジェクトがありますか、それとも作成する方法はありますか? 1 パーミットで初期化された Semaphore オブジェクトが役に立たないので、質問しています。この場合を考えてみましょう:

最初の取得時に例外が発生した場合、catch ブロックでの解放によって許可が増加し、セマフォはバイナリ セマフォではなくなります。

正しい方法はありますか?

上記のコードは、セマフォがバイナリになることを保証しますか?

0 投票する
4 に答える
258 参照

java - java.util.concurrent でのメモリーの一貫性

Memory Consistancy Propertyから、次のことがわかります。

これは、あるスレッドでオブジェクトを作成して ConcurrentLinkedQueue に入れると、別のスレッドがオブジェクトのすべてのプロパティを参照し、そのオブジェクトで他の同期が行われないことを意味しますか?

例えば:

1つのスレッドで:

…………

…………

別のスレッドで

…………

2 番目のスレッドは確実にcomplexオブジェクトのプロパティを認識しますか? 最初のスレッドがオブジェクトをキューに置いた後、2 番目のスレッドがたまたまオブジェクトをフェッチして出力した場合。

通常、オブジェクトが共有されている場合は、マルチスレッド環境でオブジェクトを同期する必要があることがわかっています。

お気に入り

0 投票する
13 に答える
30365 参照

java - Java スレッドを順次実行する

3 つのスレッドを順番に実行するにはどうすればよいでしょうか? たとえば。スレッド 1、スレッド 2、スレッド 3。あるスレッドの参照を別のスレッドに渡し、run() メソッドから呼び出すことはできません。

したがって、コードは次のようになります。

そしてアウトプットは

これは ThreadPoolExecutor を使用し、ブロッキング キューを使用することで可能になりますが、それでも受け入れられる答えではありません。

0 投票する
1 に答える
1331 参照

java - Java.util.concurrent.TimeUnit タイプが Android で SECONDS よりも大きくないのはなぜですか?

APIレベル 1 以降のドキュメントMINUTES, HOURS, DAYSに存在する がありません (アプリケーションには 7 または 2.1 バージョンを使用しています)。

このミスも指摘されたこの質問を読みました(ただし、質問自体にはありませんでした)が、独自の計算を行うソリューションとしてのみ提案されました。

私は怠け者ではありませんが、TimeUnit.MINUTESまたはTimeUnit.HOURS積極的に使用されているサーバー (Java プロジェクト) にデータを送信します。間違いを避けたいだけです。

どんな助けにも感謝します。