問題タブ [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.

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

java - CountDownlatch を使用してスレッドを順番に動作させる方法は?

私はJavaでcountdownLatchを使用する方法を学んでおり、コードで以下に示すように簡単な例を作成しました。

そのメカニズムについて私が学んだことは、1つのスレッドだけが他のスレッドが作業を完了するまで待機するように強制する方法であり、待機していたスレッドは、他のスレッドが終了するとジョブを開始します.

私の質問は、4 つのスレッド 't1、t2、t3、および t4' があり、それらが記載されている順序で開始され、先頭/前のスレッドが終了したときに各スレッドが開始する必要がある場合です。つまり、t2 は t1 を待って t1 が終了したときに開始し、t3 は t2 を待って t2 が終了したときに開始し、t4 は t3 を待って t3 が終了したときに開始します。

1-CountDownLatch と循環バリアを使用してこれを行う方法は?

2- CountDownLatch クラスのコンストラクタに渡される countDown パラメータは、待機しているスレッドの数を表す必要がありますか?

コード:

}

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

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();ます。

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

java - それぞれが同じ実行可能クラスを持つ 2 つの異なるスレッドに CountDownLatch を使用する方法

CounDownLatchそれぞれが同じ実行可能クラスを持つ 2 つの異なるスレッドに を使用する方法は?? FICS と fiCS_R7 を同じ実行可能なクラス FICS にしたいのですが、fiCS_R3 が終了すると fiCS_R7 が開始されます。

どうやってやるの。

コード:

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

java - ExecutorService と CountDownLatch は、終了するまでメイン スレッドをブロックしますか?

私の問題は、t1 と t2 の 2 つのスレッドがあることです。どちらもいくつかの計算を行い、私のプログラムによれば、t1 と t2 の両方がタスクを終了してから続行するまでブロックする同時実行技術を使用したいと考えています。

を試しcountdownLatch、 について読んExecutorServiceで小さな例を作成しました。についてはExecutorService、次のようなことをしました。

また、「終了」という単語は出力されませんでした。これは、executorServiceオブジェクトがブロックされていないことを意味します。

私の状況に合わせて使用​​する必要がある同時実行テクニックを教えてください

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

java - スレッドが終了するのに必要な正確な時間を知る方法

2 つのスレッド t1 と t2 があります。どちらもいくつかの計算を行い、t1 と t2 が終了するまでメイン スレッドをブロックしようとしています。以下に示すように .awaitTermination() を使用しましたが、問題は、if ステートメントであるにもかかわらず、.awaitTermination() が無限ループに入ることです。

なぜそれが起こっているのかを見つけるのを手伝ってください。t1 と t2 が終了するのに必要な正確な時間を知らずに時間を指定する必要がありますか?

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

java - Java: CountDownLatch はスレッドセーフです

ドキュメントには、次のCountDownLatchようなものがあります。

startSignaldoneSignalはオブジェクトCountDownLatchです。

ドキュメントには、クラスがスレッドセーフであるかどうかについては何も言及されていません。

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

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 クラス:

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

java - CompletableFuture から結果を取得する方法

以下のコードに記載されている「CompletableFuture.runAsync」のそれぞれがいくつかの計算を行い、「CompletableFuture.runAsync」を呼び出すたびに結果を取得したいと考えています。つまり、「future0、future1、future2、future3」のそれぞれに、「CompletableFuture.runAsync」への各呼び出しの結果をそれぞれ含める必要があります

どうやってやるの。

*更新

私の要件は、 CompletableFuture.runAsync への呼び出しごとに、いくつかの計算を行い、これらの値の ArrayList を返す必要があることです。CompletableFuture.runAsync への 4 回の呼び出しの後、返された ArrayLists でさらに計算を行いたいと思います。

コード: