問題タブ [threadpoolexecutor]

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 投票する
4 に答える
1888 参照

java - Java で Executor を使用してファイルを書き込む

私はList<Map<String,String>>ieを持っています。マップのリスト。各マップにはFile NameasKeyFile ContentasがありValueます。

上記のリストには 25 万ルピー以上のマップがあります。私の要件は、このリストを反復処理し、各マップ キーと値を読み取る出力フォルダーにファイルを作成することです。したがって、最終的には 250 万個のファイルが作成されます。4時間以上かかります。次に、プログラムを停止します。25lakh のレコード全体に対してプログラムを実行した場合にかかる正確な時間はわかりません。

マルチスレッドを使用してこれを最適化する必要があります。

Javaを使用してこれを最適化するにはどうすればよいですかExecutors/ Fork/ Join(私は持っていますJava 7

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

android - Asynctask の速度と ExecutorService の同じプロセス

私のアプリは、応答するデバイスのサブネットをスキャンする必要があります (特定のサービスのポート 80/8080 を確認します)。executorservice/threadpool を使用してスキャン タスクを完了していましたが、完了までに約 30 秒かかりました。

上記のプロセスを asynctask を使用するように書き直しました - プロセスにかかる時間が大幅に長くなりました (数分)。

元の executorservice に戻り、このプロセス全体を妥協案として asynctask にラップしました (したがって、UI をブロックせず、迅速に完了します) が、これがベスト プラクティスであるとは思えません。また、進行状況の更新、キャンセルなどの問題も発生します。

UIの更新/キャンセル可能な機能を提供するより遅いプロセスを使用するのが最善ですか、それとも(プロセス全体で30秒しかかからないため)-より高速なエグゼキューターサービスを使用しますか?

ありがとう。

0 投票する
6 に答える
50201 参照

java - LinkedBlockingQueue を使用した ExecutorService と ThreadPoolExecutor の比較

負荷とパフォーマンスのテストを行っているため、クライアント コードのエンド ツー エンドのパフォーマンスを測定するために複数のスレッドを生成する必要があるマルチスレッド プロジェクトに取り組んでいます。そこで、を使用している以下のコードを作成しましたExecutorService

以下はコードですExecutorService

問題文:

今、私はインターネットでいくつかの記事を読んでいました。もあることがわかりましたThreadPoolExecutor。そのため、どちらを使用すればよいか混乱しました。

上記のコードを次のコードから置き換えると:

に:

これは何か違いがありますか?ExecutorServiceを使用して元のコードと を使用して貼り付けた新しいコードの違いを理解しようとしていThreadPoolExecutorます。私のチーム メイトの何人かは、2 番目のもの (ThreadPoolExecutor) が正しい使用方法であると言いました。

誰かが私のためにこれを明確にすることができますか?

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

java - Java - スレッドプール

スケジュールされたスレッド プール--->

スレッド 1 --->

スレッド2--->

Thread 110秒ごとに実行されています。Thread 230分後に開始することになっています。

Thread 1Thread2は、30 分後に開始することが期待されている場所で、1 時間後に開始する期待どおりに動作しています。

のレイテンシがthread1この問題の原因ですか?もしそうなら、thread2スレッド プールにスレッドが 1 つしかないことを考えると、スレッド 1 が終了したときにスレッド 1 が優先されるはずです.なぜThread2ストレッチが長すぎて 1 時間後に開始できないのですか?

私は無知で、いくつかの指針を期待しています。助けてください。

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

java - PriorityBlockingQueue に基づく ThreadPoolExecutor が機能していないようです

サーバーから取得する画像が多数あり、他の画像よりも優先度の高い画像を取得したいので、実装ThreadPoolExecutorする a を返す独自のものFutureTaskを実装しComparableましたが、機能していないようです。タスクは、キューに追加した順序で多かれ少なかれ処理されます。BlockingQueuemyの をデバッグしたところ、myを優先度の高いものThreadPoolExecutorに追加すると、キューの一番上に移動されないことがわかりました。Runnableここにコードがあります

そして、次の方法でタスクをプールに追加します。

私のBitmapLoaderRunnable実装Comparableと、メソッドをデバッグするときにcompareTo呼び出されます。私は何を間違っていますか?ありがとう

編集:以下は私のランナブルのコードです

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

java - ThreadPoolExecutor.worker.run に時間がかかりすぎる

で実行したいくつかのタスクがありCachedThreadPoolます。いくつかのプロファイリングの後、タスク自体は 10% の時間しか実行されず、残りの 90% はthreadpoolexecutor$worker.run(私はjvisualvmプロファイリングに使用しています) によって使用されていることがわかりました。

そして、ここで私は立ち往生しています。一体何をしているのかthreadpoolexecutor$worker.run、なぜそんなに時間がかかるのか、問題を解決する方法がわかりません。タスクをできるだけ速く実行する必要があります。

それがプロファイラーが言うことです:

スレッドSelf timeが眠っているということでしょうか?

前もって感謝します。PS 愚かで申し訳ありませんが、私は優れた Java プログラマーではありません。

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

java - スレッドが終了したときの ThreadPoolExecutor のクリーンアップ

いくつThreadPoolExecutorかのコアと特定の最大数のスレッドを実行するがあります。実行されるタスクは、スレッドごとに HornetQ (スタンドアロン) 接続を作成し、スレッドの実行中に接続を維持します。keepAliveTimeただし、スレッドの有効期限が切れてスレッドが死ぬと、それらを閉じることはできません。スレッドが死ぬ直前にリソースをクリーンアップする方法はありますか?

これを解決する 1 つの方法は、HornetQ 接続にプーリング ソリューションを使用することです。

どんな提案でも大歓迎です。