問題タブ [java-threads]
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 - Java: 自端末でサブプロセスを開始
2 つのコントローラーと、両方を開始する 1 つのプログラムがあります。1 つはデータを生成するエミュレーターで、もう 1 つはデータを分析します。2 つのコントローラーは相互に依存し、RMI を使用して通信します。したがって、別のスレッドでエミュレーターを開始し、メイン スレッドでアナライザーを開始します。 それは完全にうまくいきます。
問題は、どちらもコンソールにかなりの量の出力を生成することであり、2 つの異なる端末に出力することを本当に望んでいます。それを行う方法はありますか?
新しいコマンド ライン内のサブ プロセスとしてエミュレーターを起動しようとしました(プラットフォームに依存しないことが次のステップになります)。
ただし、classpath
が長すぎて、の出力cmd.exe
はThe command line is too long.
独自の出力端子を持つ別のスレッドまたはプロセスを生成する方法を知っていますか? 何か提案をいただければ幸いです。
乾杯
アップデート
OlaviMustanoja の回答をこのソリューションと組み合わせました http://unserializableone.blogspot.co.uk/2009/01/redirecting-systemout-and-systemerr-to.html
標準System.out
、System.err
およびスタック トレースを使用するようになりました。また、スクロールします。
java - Java スレッドの状態遷移、WAITING から BLOCKED、または RUNNABLE?
SO コンセンサスと、インターネット上のほぼすべての Java スレッド状態図との間には矛盾があるようです。具体的には、起動後または起動後 のスレッド状態遷移について...WAITING
notify()
notifyAll()
- WAITINGが直接 RUNNABLE に移行することはありません
- スレッドは通知されるまで待機しています...その後、ブロックされます...
- このスレッドが通知されると、実行できなくなります...これは..ブロックされた状態です。
したがって、SO に関するコンセンサスは次WAITING
のBLOCKED
とおりnotify()
ですnotifyAll()
。下の図は、この遷移を緑色で示しています。
質問
Web 上のほとんどの状態図が からWAITING
への遷移を示しておりRUNNABLE
、 ではないのはBLOCKED
なぜですか? 赤色の描写は、正しくない遷移を示しています。私は何かを逃していますか?
java - Java スレッドが必要な理由
一般的な質問があります。Java の本を読んでいて、スレッドを使用するプログラムに出くわしました。本は、スレッドがマルチプロセッシングに使用されると述べました。私が書いたらそれを知りたい:
run メソッドをオーバーライドしてユーザーからの入力を取得すると、入力を待ってから、フレームを開くなどの GUI タスクを実行するか、両方のタスクを同時に実行します。
java - スレッドがスリープ中の同期メソッドでのロック解除
スレッドは、同期メソッドでスリープ状態に移行するときに取得したロックを解放しますか?
java - Javaでのいくつかの同時実行設計
サーバーから巨大な画像を取得する必要がありますが、画像が大きすぎるため、サーバーはそれを実行できません。その写真の小さな部分を取得できるように、「座標」を与えることができます。そのため、画像を 100 個のタイルに分割し、10 個のタイルを行に追加し、各行を追加します。順番に行うとうまくいきます。現在、10 個のタイルをダウンロード -> それらを行に追加 -> 次の 10 個のタイルをダウンロード -> 行に追加 -> 2 行目を最初の行に追加 -> 次の 10 個のタイルをダウンロードなど (簡略化):
しかし、行が非常に大きいため、それらを互いに追加するには非常に時間がかかります。それらが追加されている間、他のタイルをダウンロードするスレッドを作成できると思いました。そして、ここに問題があります。私は並行してプログラミングすることに慣れていません。技術的にどのように行われるか (Runnable の実装など) は知っていますが、どのように設計すればよいですか? downloadImage(xcoord, ycoord)
別のスレッドで実行するというアイデアがありましたが、 removeBlackColor(tile)
. また、スレッド内またはスレッドが終了した後?..そして、誰が何を(結合して)待つべきですか? それほど混乱していなかったことを願っています。どこかでさらに説明が必要な場合はお知らせください。