問題タブ [countdownlatch]
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 を使用してスレッドを順番に動作させる方法は?
私はJavaでcountdownLatchを使用する方法を学んでおり、コードで以下に示すように簡単な例を作成しました。
そのメカニズムについて私が学んだことは、1つのスレッドだけが他のスレッドが作業を完了するまで待機するように強制する方法であり、待機していたスレッドは、他のスレッドが終了するとジョブを開始します.
私の質問は、4 つのスレッド 't1、t2、t3、および t4' があり、それらが記載されている順序で開始され、先頭/前のスレッドが終了したときに各スレッドが開始する必要がある場合です。つまり、t2 は t1 を待って t1 が終了したときに開始し、t3 は t2 を待って t2 が終了したときに開始し、t4 は t3 を待って t3 が終了したときに開始します。
1-CountDownLatch と循環バリアを使用してこれを行う方法は?
2- CountDownLatch クラスのコンストラクタに渡される countDown パラメータは、待機しているスレッドの数を表す必要がありますか?
コード:
}
java - スレッドを使用した Java CountDownLatch
Java CountDownLatch を使用してスレッドの実行を制御する方法を学びたいと思っています。
私は2つのクラスを持っています。1 つは呼び出されPoller
、もう 1 つは ですReferendum
。スレッドはReferendum
クラスで作成され、そのrun()
メソッドはPoller
クラスに含まれています。
Poller クラスと Referendum クラスでは、 import を介して Java カウントダウン ラッチをインポートしjava.util.concurrent.CountDownLatch
ました。
私は主に、*.countDown();
and*.await();
ステートメントを適用する必要がある理由と場所を理解し、コンストラクター内で countDownLatch を正しく初期化したかどうかを理解しようとしていますPoller
。
2 つのクラスの完全なコードは次のとおりです。
と
一言で言えば...すべてのスレッドは、実行されるpublishPollResults();
前にステートメントを実行する必要がありrevealResults();
ます。
java - それぞれが同じ実行可能クラスを持つ 2 つの異なるスレッドに CountDownLatch を使用する方法
CounDownLatch
それぞれが同じ実行可能クラスを持つ 2 つの異なるスレッドに を使用する方法は?? FICS と fiCS_R7 を同じ実行可能なクラス FICS にしたいのですが、fiCS_R3 が終了すると fiCS_R7 が開始されます。
どうやってやるの。
コード:
java - ExecutorService と CountDownLatch は、終了するまでメイン スレッドをブロックしますか?
私の問題は、t1 と t2 の 2 つのスレッドがあることです。どちらもいくつかの計算を行い、私のプログラムによれば、t1 と t2 の両方がタスクを終了してから続行するまでブロックする同時実行技術を使用したいと考えています。
を試しcountdownLatch
、 について読んExecutorService
で小さな例を作成しました。についてはExecutorService
、次のようなことをしました。
また、「終了」という単語は出力されませんでした。これは、executorService
オブジェクトがブロックされていないことを意味します。
私の状況に合わせて使用する必要がある同時実行テクニックを教えてください
java - スレッドが終了するのに必要な正確な時間を知る方法
2 つのスレッド t1 と t2 があります。どちらもいくつかの計算を行い、t1 と t2 が終了するまでメイン スレッドをブロックしようとしています。以下に示すように .awaitTermination() を使用しましたが、問題は、if ステートメントであるにもかかわらず、.awaitTermination() が無限ループに入ることです。
なぜそれが起こっているのかを見つけるのを手伝ってください。t1 と t2 が終了するのに必要な正確な時間を知らずに時間を指定する必要がありますか?
java - Java: CountDownLatch はスレッドセーフです
ドキュメントには、次のCountDownLatch
ようなものがあります。
startSignal
とdoneSignal
はオブジェクトCountDownLatch
です。
ドキュメントには、クラスがスレッドセーフであるかどうかについては何も言及されていません。
java - ExecutorService は、スレッドが終了するまでブロックしません
クラス FeatOrientation があり、そのクラスのコンストラクターで、2 つの操作をそれぞれ別のスレッドで実行し、CountDownLatch を使用して、gaussThread が終了すると laplaceThread が開始されるようにします。
メインメソッドを持つメインクラスでは ExecutorService を使用しており、「.runAsync(new FeatOrientRun(bgrMat), featOrientExe);」
run メソッドで「calcFeatOrient」関数を呼び出し、その関数で FeatOrientation クラスからオブジェクトをインスタンス化します。そしてライン
私はそれを使用して、FeatOrientation クラスの 2 つのスレッドが終了するまでメイン スレッドをブロックし、次に計算を実行するか、次のようにデータを表示します。
問題は、実行時に、getSmoothedImgList が空でないにもかかわらず、コンソールから以下に示す出力を受け取ることです。次の3行をコメントアウトすることで、空ではないことがわかりました。
メインメソッドでFeatOrientationクラスからオブジェクトをインスタンス化し、メインスレッドを7秒間スリープさせ、7秒後に次の行を呼び出しました
そしてアウトアウトを受け取りました。
私が ExecutorService で何を間違っているか、および以下に投稿されたコードで私が従っているアプローチが機能しない理由を教えてください。FeatOrientation クラスが機能し終わるまで待ちます。
コンソール出力:
メインクラス:
FeatOrientation クラス:
java - CompletableFuture から結果を取得する方法
以下のコードに記載されている「CompletableFuture.runAsync」のそれぞれがいくつかの計算を行い、「CompletableFuture.runAsync」を呼び出すたびに結果を取得したいと考えています。つまり、「future0、future1、future2、future3」のそれぞれに、「CompletableFuture.runAsync」への各呼び出しの結果をそれぞれ含める必要があります
どうやってやるの。
*更新:
私の要件は、 CompletableFuture.runAsync への呼び出しごとに、いくつかの計算を行い、これらの値の ArrayList を返す必要があることです。CompletableFuture.runAsync への 4 回の呼び出しの後、返された ArrayLists でさらに計算を行いたいと思います。
コード: