問題タブ [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.
java - CountDownLatch.getCount() が int ではなく long を返すのはなぜですか?
コードを調べたところ、すべてが int です。CountDownLatch コンストラクターに渡されるパラメーターは int、Sync の変数は int、Sync.getCount() の戻り値の型は int です。しかし、CountDownLatch.getCount() は long を返しますか? なぜだろうか。
java - ExecutorServiceawaitTerminationがスタックします
で固定サイズのスレッドプールを作成しExecutors.newFixedThreadPool(2)
、10個Runnable
のオブジェクトを実行しました。ブレークポイントを設定し、実行をトレースしました。ただし、fixedSizeThreadPool.awaitTermination()
すべてのタスクが完了しても続行できません。
基本的に:
しかし、これは常に行き詰まりawaitTermination
ます。どうしたの?
java - java.util.Set の無制限のキューベースの同時実装を探しています
次の機能を備えた java.util.Set の実装を探しています。
- 同期ロックを使用しないで同時実行する必要があります。したがって、 Collections.synchronizedSet ()を使用したくないことは明らかです。
- 広告掲載順を維持する必要があります。したがって、ConcurrentSkipListSet は、compareTo() を equals() として使用し、Comparable または Comparator の実装を提供する必要があるため、好ましくありません。LinkedHashMap にもかかわらず、挿入順序を保持しないConcurrentLinkedHashMapもあります。
- 無制限にする必要があります。
- 私の操作はキューの最初の要素に対してのみ行われるため、FIFO リンク リストをお勧めします。
私が見つけた限り、唯一の適切な実装はCopyOnWriteArraySetですが、ドキュメントには次のように記載されています。
ミュータティブ操作 (追加、設定、削除など) は、通常、基になる配列全体をコピーする必要があるため、コストがかかります。
私の場合、キューの最後に多くの挿入(セット)があり、キューの先頭から多くの削除(および読み取り)があります。それで、何かお勧めはありますか?
java - 複数のスレッドとCPU使用率のポーリング
ユーザーからジョブのリストを受け取る呼び出しがあり、ユーザーが3つのジョブA、B、Cを投稿し、それらはすべて独自のスレッドAT、BT、CTで実行を開始し、これら3つのスレッドのいずれかがあれば監視を開始します。ジョブは失敗し、Bが失敗したと言います。停止するように、AとCに信号を送る必要があります。すべてのスレッドが停止したときは戻り、すべてが成功したときはtrue、1つがfalseに失敗した場合。
現在、チェックと50msのスリープを実行する1つの大きなwhileループがあります。これは機能しますが、スリープなしでこれを行うためのより良い方法があるのではないかと思っていました。 cpu queのですが、それでも60%前後のcpuを使いすぎています。
java - 「awaitTermination(Datedeadline)」メソッドがないのはなぜですか?
に送信されたタスクのリストがありExecutorService
ます。ただし、タスクが完了していなくても、午前2時30分の期限までにExecutorServiceをシャットダウンする必要があります。どうすればこれを達成できますか?APIを確認しましたが、以下のようなメソッドしかありません。
しかし、どうすれば次のブロックをアトミックに実行させることができますか?つまり、どうすればギャップを回避できますか?例えば:
ありがとう。
java - Java Concurrency: ワーカー スレッドの応答を非同期で取得する方法
java.util.concurrent
パッケージ初心者です。私はいくつかのサンプルを書き込もうとしています。これが私のサンプルコードスニペットです:
ワーカー スレッドからの Future オブジェクトの処理に関して 1 つ質問があります。私のforループでは、タスクの処理は順次行われます。たとえば、ワーカー スレッドから返された結果を処理する必要があるとします。2 番目のワーカー スレッドが最初のワーカー スレッドより前に完了した場合、私のコードでは 2 番目のワーカー スレッドを最初に処理する方法がありません。
現在のスレッドを処理するための最良の方法を提案できる人はいますか?
ありがとう、ベンカット・パパナ
java - Java Concurrency: ワーカー スレッドを使用してプールを作成できますか
java.uti.concurrent
パッケージ初心者です。を使用してソケット リスナ クラスを開発しようとしていますExecutorService
。ここに私のメインコードスニペットがあります:
私MyTask
のクラスにはオブジェクトがあり、タスクExecutorService
を送信します。MyTask2
(私の意図は、各ソケット接続に対してマルチスレッド処理を実行することです)
私のアプリケーションは、ソケット クライアント リクエストを受け入れ、 のプールを作成しておりMyTask2
、正常に実行されています。しかし、最初のリクエストを終了した後にのみ、2番目のソケットクライアント接続を受け入れています。
誰でもこれを修正する方法を教えてください。
前もって感謝します。
-ベンカット・パパナ
java - 固定レートでのCallableのスケジューリング
固定レートで実行したいタスクがあります。ただし、実行するたびにタスクの結果も必要です。これが私が試したことです:
タスク
いいえ、を使用しScheduledExecutorService
てスケジュールを設定しようとしました。Callable
固定レートでスケジュールすることはできず、スケジュールできるのはaだけRunnable
です。
お知らせ下さい。
java - executor タスクのすべての副作用は、invokeAll の後に表示されますか?
いくつかのタスクをExecutor
usingにサブミットした場合、返された s のそれぞれをinvokeAll
呼び出さなくても、サブミットされたスレッドがタスク実行のすべての副作用を見ることが保証されますか?get()
Future
実用的な観点からは、これは有用な保証になるように思われますが、javadoc には何も表示されません。
より正確にはCallable
、executor に送信された の本体内のすべてのアクションは、呼び出しから戻る前に発生しますか?invokeAll()
get()
実際には戻り値の型が であり、例外がスローされない場合に、各Future を無駄に呼び出すのは面倒ですVoid
。すべての作業は副作用として発生します。
java - 結果が null の java.util.concurrent.Future の処理
タスクを送信し、futureTask.get() が null を返した場合、Callable オブジェクトで送信した内容を別の方法で処理したいと考えています。デバッグすると、Future に「sync」というプライベートの最終メンバーがあることがわかります。「sync」には呼び出し可能オブジェクトが含まれており、呼び出し可能オブジェクトで送信した元のデータが含まれています。残念ながら、私はそれに到達することはできません。
疑似コードで...
これを行う方法があるべきだと思われますか?ありがとう。