問題タブ [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 - スレッドを使用して巨大なファイルを分割する
5 億行を超えるテキスト ファイルがあり、次のように構成されています。
「緯度」と「経度」を指定すると、パスを返すメソッドを作成しています。巨大なファイルをセクション「sec0、sec1、sec2、sec3、...、secn」に分割し、セクションごとにその「lat」と「lon」を探すスレッドを作成し、スレッドがパス、他のスレッドは強制終了されます。
私の質問は、私のアプローチは有効ですか? そして、そのような問題の最適な解決策は何ですか。
java - Javaで例外が発生してもスレッドの実行が継続する
以下のコードにスレッドのスケルトンがあります。シンプルなカウントダウン ラッチを使用しました。スレッド 2 に応じてスレッド 1 が完了している状況に陥っています。例外がなければ、コードは正しく実行されます。しかし、例外の可能性はもっと高くなります。スレッド 2 またはいずれかのスレッドで例外が発生した場合は、すべてのスレッドの実行を停止する必要があります。私の独立したスレッドは、例外の後でも実行を続けます。また、スレッド 1 でフラグを使用して、スレッド 2 で例外が発生したかどうかを確認しました。例外をテストする例として、ゼロ除算の例外を意図的に配置しました。これに対する解決策が見つかりません。私を助けてください..!
私の出力は次のとおりです。
java - CountDownLatch await() メソッドに関する問題?
私のプログラムでは、CountDownLatch await () メソッドはプログラムをブロックし続けます, CountDownLatch が書かれているように, カウントダウン ラッチです.カウントが 0 になると 3 つのスレッドの実行がトリガーされます.cdAnswer が 0 に減ると 3 つのスレッドが実行されたことを証明します.実行するメイン スレッドですが、私のプログラムでは、3 つのスレッドしか完了しません 2 つのメイン スレッドが実行されました。一番下が私のプログラムです。
問題補足: この結果は私が期待したものではありません。このタスクの結果は完了しました」は最終的な印刷物になります
java - ExecutorService Java を使用して Runnable クラスの run メソッドに到達するまでの時間遅延を短縮する方法
ボタンクリックイベントが Thread にタスクを割り当て、 midi メソッドを呼び出して音楽を再生するリアルタイム実行アプリケーションを実装しようとしていました。ボタンが少し遅れてクリックされるとすぐに音楽を開始する必要があります。midi コードは Runnable クラスの run メソッドに実装されています。しかし、ボタンクリックイベント自体が2ミリ秒以上かかってからrunメソッドの最初のステートメントに到達するのに. 新しく作成されたスレッドのコレクションを持つことができ、スレッドによって引き起こされる時間の遅延を減らすため、Executor Service を使用しようとしました。ExecutorService アプリケーションは初めてです。私が観察したのは、ボタンが最初にクリックされたときに2ミリ秒以上かかりましたが、再起動すると遅延が減少しました。しかし、ある段階では4ミリ秒以上に増加しています..この遅延を毎回1ミリ秒未満に維持する方法. ExecutorService またはその他のサービス プロバイダーを使用してそれを行う方法はありますか? これが私のコードです。ExecutorService の使用方法です。使用方法が適切でない場合は、修正してください。
TestExecutorService.java
出力:
java - CountDownTimer がまったく機能しない
Thread 内で CountDownTimer を実行しようとしていますが、うまくいきません。
したがって、MainActivitys onCreate では、次のようにボタンをクリックして開始します。
runner
を実装するクラスのインスタンスですRunnable
:
このコードでは、Logging onClick、実行、および開始後にアプリケーションがフリーズするだけです。に変更runOnUiThread(runner)
するnew Thread(runner).start();
と、Logging onClick の直後にアプリケーションがクラッシュし、出力がなくなります。
一部の調査では、ハンドラーを使用しているため、UI-Thread で CountDownTimer を実行する必要があるとされています。しかし、それはちょうどフリーズします。
スレッド全体を削除し、ボタンの onClick を呼び出すだけrunner.run();
で (ランナー インスタンスの実装 Runnable も削除します)、次のログ エントリが取得されますonCLick, run, starting, started, waiting
。しかし、タイマーが実行されず、onTick メソッドが呼び出されないかのように、何も起こりません。
CountDownTimer を修正するにはどうすればよいですか?
java - CowntDownLatch を使用して競合状態を強制するテストにより、java.lang.IllegalMonitorStateException が発生する
競合状態を強制しようとした (または少なくともその発生確率を上げようとした) テストを作成しようとしましたが、CountDownLatch
.
問題は、私java.lang.IllegalMonitorStateException
がCountDownLatch.wait()
. 私は確かに を誤用してCountDownLatch
おり、このテストを巧妙な方法で作成していません。
この単純なコードは、私のアイデアと私の問題を再現します (私にはgistもあります):
の javadoc には、現在のスレッドがオブジェクトのモニターの所有者でない場合にスローCountDownLatch.wait()
されることが記載されています。IllegalMonitorStateException
しかし、私はこれが何を意味するのか理解できず、この例外を回避するためにコードを再作成する方法を理解することもできません.
編集:回答に記載されているヒントを使用して、上記の例の新しいバージョンを作成し、この gistに保存しました。今は例外はありません。
java - カウントダウンラッチとさらなる同期
おそらく、1 つのスレッドが複数の (潜在的に) 待機中のスレッドに対して を設定したい場合、次のクラス定義があるとします。
a は volatile である必要があるように思えますが、よくわかりません… getA の周りに追加の同期が必要な理由、または a が volatile である必要がある理由を共有していただけますか?