問題タブ [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 投票する
3 に答える
1761 参照

java - 独自のスレッドを生成するスレッドを待つ方法は?

別のスレッドで機能するメソッドをテストしようとしていますが、単純化すると次のようになります。

私の単体テストでは、Clazz.i == 2 をテストしたいのですが、スレッドが値を変更する前にアサートが実行されると思うので、これを行うことはできません。別のスレッドを使用してテストし、結合を使用して待機することを考えましたが、それでも機能しません。

SSCCE:

これは、テストのメイン コードが 2 番目のスレッドを待機 (結合) しているスレッドを作成するが、2 番目のスレッドは作業を実行せず、別のスレッドを作成して作業を実行してから終了し、最初のスレッドを続行するためだと思います。スレッド、3 番目のスレッドはClazz.i = 2アサーションの後に実行します。

最初のスレッドが開始するスレッドと、そのスレッドが開始するスレッドを待機するようにするにはどうすればよいですか?

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

java - CountDownLatch : countDown に達したときにスレッド順序を維持する

countDown に達したときに待機しているため、スレッドの順序を維持することは可能ですか?

スレッド 1 の呼び出しがスレッド 2 の前に待機する場合は、同じ順序で再スケジュールする必要があります。

それも意味があります:)?

0 投票する
0 に答える
587 参照

java - x 秒、または SQL クエリが結果を返すまで待ち​​ます

x 秒後に結果が返されるか失敗するまで、SQL クエリを継続的に実行するメソッドを実装しようとしています。

現在、私のメソッドは CountDownLatch を使用しています:

これを行うより良い方法はありますか?

0 投票する
0 に答える
669 参照

java - CountDownLatch は非同期コールバックをブロックします

コードに次の構造があります

何が起こるかというと、CountDownLatch1 分間待機してからリスナーがトリガーされます。ただし、ラッチはすでにカウントダウンされているため、false常に返されます。私には、ラッチがスレッド全体をブロックしていて、非同期コールバックが発生しないように見えます。event.addListener()...パーツを でラップしようとしましたRunnableが、問題は解決しません。

コードの別の部分にまったく同じ構成があり、そこで機能します。

編集:ログを入れましThread.currentThread().getId()たが、実際には同じIDに評価されます。非同期コールバックは別のスレッドにあるべきではありませんか?

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

java - Java CountDownLatch は、ラッチをカウントダウンする thread.run() が例外を受け取ると、タイムアウト値を待機します。

を使用しCountDownLatchて 2 つの Java スレッドを処理しています。私のクラス構造は次のとおりです。

MainClass.java
ThreadOne.java
ThreadTwo.java

メインクラス:

メイン クラスは、他の 2 つのスレッドが作業を完了するまで待機します。作業が完了するとすぐに、タイムアウト値 (20 秒) まで待機しません。私の問題は、スレッドのいずれかが破壊または破損した場合CountDownLatch、タイムアウト値を待つことです。その中断されたスレッドを無視して、20 秒待たずに先に進む方法はありますか?

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

android - 非同期を続行する前に retrofit2 が終了するのを待つ最良の方法

同様の質問が寄せられていることは承知していますが、私はアンドロイドが初めてで、コンテキストがわずかに異なるため、答えが少しわかりにくいと感じています。

スレッドの使用と同様に CountDownLatch を調べましたが、どの方法を使用すればよいかわかりません。どんな助けでも大歓迎です。また、SharedPreferences に commit() の代わりに apply() を使用してみました。

LoginActivity から 2 つの retrofit2 呼び出しを行っています。2 番目の呼び出しで使用するには、最初の呼び出しのトークンが必要です。最初の改造呼び出しの onResponse メソッドで、トークンを sharedpreferences の文字列に保存しています。

2 回目の呼び出しでは、serverToken の値が、アプリの前回の実行で設定されたトークンとして返されます。

最初の呼び出し (getToken) onResponse

ログイン アクティビティ

私の 2 回目のレトロフィット コール

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

java - CountDownLatch を使用してメソッドを単体テストする方法は?

countdownlatch を使用している以下のコードの単体テストを行う必要があります。これはテストコードのみです。スレッド/呼び出し可能オブジェクトをモックするために、mockito thenAnswer と InvocationOnMask を使用しています。しかし、単体テストでcountdownlatchを初期化/モックまたは終了する方法がわかりません。

Unit Test クラスを開発しましたが、役に立ちません...