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

java - エグゼキュータを再初期化する際のベストプラクティス

を使用して複数のタスクを実行するSwingアプリケーションがあります。ThreadPoolExecutorある時点で、すべてを再初期化したいです。私が使用しているexecutor.purge();executor.getQueue().clear(); これで十分ですか?これを実行するためのより良い方法/実践はありますか?前もって感謝します。

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

java - ジョブが threadPoolExecution に到着したときにすべてのスレッドを呼び出す

共通の workQueue である adPoolExecution アーキテクチャでは、ジョブが到着すると、スレッドが 1 つだけ呼び出され、そのスレッドが作業を完了します。代わりに、すべてのスレッドが呼び出され、すべてのスレッドがタスクを実行するようにします。

私のシナリオは以下の通りです。5000 個のデータ項目があり、各データ項目に対してタスクを実行する必要があります。1つずつ実行すると遅いことが判明したため、ここでスレッドを使用したいと思います。ここで、5 つのスレッドを使用したとします。最初のスレッドは最初の 1000 個のデータ項目を実行し、2 番目のスレッドは次の 1000 個を実行し、他のスレッドが続きます。この 5000 個のデータ項目に対して実行する必要があるジョブが到着すると、タスクを実行できるように、5 つのスレッドすべてを呼び出すか、スリープ状態から戻す必要があります。

これは、Java で adPoolExecution を使用してどのように可能ですか。同じジョブの 5 つのコピーをキューに挿入すると役立つ場合があることは承知しています。しかし、これには多くの副作用があります。たとえば、スレッドがその仕事をすぐに完了した場合、他の誰かの仕事を占有してしまいます。

ありがとう

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

java - Java プログラムを Eclipse で実行する場合とコマンドラインから実行する場合で、ThreadPoolExecutor の動作が異なるのはなぜですか?

このコードを Eclipse (Juno) から実行すると OOME がスローされるのに、コマンド ラインから実行すると正常に動作する理由を誰か説明できますか? どちらの場合も -Xmx256M を使用します。

これがEclipseの出力です

ノートブックで実行しましたが、他の PC でどのように動作するかはわかりません。

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

android - Androidでの複数の同時HTTPリクエスト

したがって、AsyncTask内に以下のコードがあり、7つの異なる非同期HTTPリクエストを呼び出したいと思います。すべてがうまく機能し、7つのexecute()メソッドすべてが同時に開始します(数ミリかかるので、これは素晴らしいことです)。

残念ながら、この方法にかかる時間はおよそです。16秒 すべてのエグゼキュータのものを除外し、元のワーカーAsynctaskでHTTPダウンロードメソッドを呼び出すと、約がかかります。9秒 そのため、実際には、同時ではなく順次の方が時間がかかりません。なぜこれが起こっているのか考えはありますか?たぶんサーバー側に何かありますか?おそらく、エグゼキュータが非同期タスクで開始されたためですか?どうもありがとう !

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

java - JDK 6 の LinkedBlockingQueue 代替

threadPoolに LinkedBlockingQueue を使用しています

そして、JDK 7で修正されたメモリリークバグ(メモリが LinkedBlockingQueue Nodes でいっぱいになり、徐々に遅くなる)に苦しんでいます。

今のところ、ランタイム環境や JDK を変更したくありません。

BlockingQueue インターフェイスの他の実装とは異なり、LinkedBlockingQueue にはサイズ制限がありません。代替キューを提案できますか?

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

java - ThreadPoolExecutor による条件付きブロック

ThreadPoolExecutor最大スレッド数に達した場合にブロックするだけでなく、設定できる別の条件にも拡張したいと考えています。どうすればいいのか、それが可能かどうかさえわかりません。

条件が設定されている場合にスレッドを作成しない ThreadFactory を提供する方法があるように見えますがそれが最善の方法であるかどうかは正確にはわかりません。フラグが設定された後に使用されていない余分なスレッドがあった可能性はありますか?

0 投票する
9 に答える
12986 参照

java - エグゼキュータ:タスクが再帰的に作成された場合、すべてのタスクが終了するまで同期的に待機するにはどうすればよいですか?

私の質問はここでこれと強く関連しています。そこに投稿されたように、メインスレッドは、ワークキューが空になり、すべてのタスクが終了するまで待機する必要があります。ただし、私の状況での問題は、各タスクによって再帰的に新しいタスクが処理のために送信される可能性があることです。これにより、これらのタスクの将来をすべて収集するのが少し厄介になります。

現在のソリューションでは、ビジー待機ループを使用して終了を待機しています。

numTasksは、新しいタスクが作成されるたびに増加する値です。これは機能しますが、ビジーウェイトのためあまり良くないと思います。明示的にウェイクアップされるまで、メインスレッドを同期的に待機させる良い方法があるかどうか疑問に思いました。

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

android - PhoneGap Google Cloud Messaging Android の問題

私はそのエラーを受け取り続けます。これは、アプリケーションを初めて開いてデバイスを Google Cloud Messaging に登録した後に発生します。すべてが順調に進んでいるように見えますが、アプリケーションを一時停止し、再開すると、何らかの理由で登録解除機能が呼び出され、すぐにクラッシュしますが、アプリケーションを再入力するとすぐに、デバイスを Google Cloud Messaging に再登録し続けます。強制的に閉じなかった場合とまったく同じ状態です。その後、アプリケーションを一時停止して再開すると、強制終了しなくなります。

他の誰かがこれを経験したことがありますか、またはこれを引き起こしている原因についてのアイデアはありますか?

https://github.com/marknutter/GCM-Cordovaで GCM PhoneGap プラグインを実装しました

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

java - ThreadPoolExecutor から単一のスレッドを取得する

多数のスレッドで ThreadPoolExecutor を実行しています。スレッド内のデータを操作したいので、オブジェクトをスレッドに送信し、終了後にデータを使用したいと考えています。私が知っている唯一の方法は、スレッドが join() で終了するまで待ってからデータを使用することです。問題は、ThreadPoolExecutor から単一のスレッドを取得できないことです。私はこのようなことをしたいと思います:

残りのコード....

誰も方法を持っていますか?Callable を使用できることはわかっていますが、既存のコードがあるため、これを避けたいです...

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

multithreading - Netty OrderedMemoryAwareThreadPoolExecutor が複数のスレッドを作成しない

私は、マルチスレッド TCP サーバーと単一クライアントの永続的な接続に Netty を使用しています。クライアントは多数のバイナリ メッセージ (私の使用例では 10000) を送信し、メッセージごとに応答を受け取ることになっています。OrderedMemoryAwareThreadPoolExecutor をパイプラインに追加して、複数のスレッドでの DB 呼び出しの実行を処理しました。

メソッド messageReceived() で DB 呼び出しを実行する (または Thread.currentThread().sleep(50) でシミュレートする) と、すべてのイベントが単一のスレッドによって処理されます。

messageReceived() の単純な実装の場合、サーバーは予想どおり多くのエグゼキュータ スレッドを作成します。

ビジネス ロジック用に複数のスレッド エグゼキューターを取得するには、ExecutionHandler をどのように構成すればよいですか?

これが私のコードです: