問題タブ [executor]
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 - ExecutorServiceはマルチスレッドのパフォーマンスが遅い
簡単な計算を実行しようとしています(Math.random()
10000000回呼び出されます)。驚くべきことに、単純な方法で実行すると、ExecutorServiceを使用するよりもはるかに高速に実行されます。
ExecutorServiceの驚くべきパフォーマンスの損益分岐点で別のスレッドを読んだことがあります---経験則?バッチを使用して実行して答えを追跡しようとしましたCallable
が、パフォーマンスはまだ悪いです
現在のコードに基づいてパフォーマンスを向上させるにはどうすればよいですか?
このコードの出力
編集:Math.random()が同期されたメソッドであるため、パフォーマンスが低下します。スレッドごとに新しいRandomオブジェクトでMath.random()を変更した後、パフォーマンスが向上しました。
新しいコードの出力(スレッドごとにMath.random()をRandomに置き換えた後)
python - future.ThreadPoolExecutor で保留中のタスクをカウントします
Python 3.2 futures.ThreadPoolExecutor で保留中のタスクの数をカウントする方法を探しています。
知るまで、私には2つの解決策があります:1.-送信時に保留中のタスクの数を増やし、タスクが終了したときにカウントを減らすためにコールバックを追加します
より直接的なもの (エグゼキュータのプロパティまたはメソッド) はありますか?
前もって感謝します
java - この ThreadPoolExecutor の動作がわかりません
無制限のキュー (LinkedBlockingQueue) と、CPU の数 (たとえば 4) に設定されたコアと最大プール サイズで構築された ThreadPoolExecutor があります。
私が RejectedExecutionException を取得している間は、すべて素晴らしいです。Executor は実行中の状態です。私の理解では、これは無制限のキューでは発生しないはずです。
デバッガーでこれをキャッチして何が起こっているのかを正確に確認することはできませんでしたが、スタック トレースからは ThreadPoolExecutor.execute のように見え、workQueue.offer が false を返しているため、スピンしようとするビットにジャンプします。新しいスレッドを立てます。ただし、poolSize は既に最大になっているため、拒否された実行例外がスローされます。
これはよくわかりません。
ただし、最大プール サイズをコア プール サイズよりも少し大きくする必要がありますか?
android - Eclipseforandroidアプリのエグゼキューターサービスに問題があります
基本的に、私はAndroid携帯用のOpenGLライブ壁紙を開発しています。これは私の壁紙サービスクラスです。
}
それは私の電話(サムスンギャラクシーS2)と他のいくつかで完全に動作します、しかしそれがロードされないという報告があります。Galaxy S1モデルからでも、ライブ壁紙をプレビューすることはできません。これは私の電話で動作するので、何が悪いのか理解できません。プログラムを実行できない電話がないので、問題を解決できません。
返信のためのthx。しかし、EGL10でわかるように、私はOpenGLES1.0を使用しています...インポートされたGL10。ああ、でもGL11(OpenGL 1.1)をインポートしたのを見たのですが、これが問題の原因だったのではないでしょうか?
java - ThreadPoolExecutor で個別のコア サイズと最大プール サイズを指定するのが良いのはいつですか?
Java 5 の ThreadPoolExecutor に個別のコア サイズと最大プール サイズを指定するポイントを理解しようとしています。私の理解では、スレッドの数は、キューがいっぱいになったときにのみ増加しますが、これは少し遅れているようです (少なくともキューが大きい場合)。
より多くのスレッドをタスクに割り当てることができてよかったのではないでしょうか。その場合は、コア プールのサイズを増やすだけです。または、あまりそうしたくない場合は、キューを大きくする必要がありますか? 個別のコア サイズと最大プール サイズが役立つシナリオは何ですか?
java - Producer Consumer パターンの実装
メールをキューに入れるメール ユーティリティを作成しようとしていますが、後でコンシューマ スレッドによって消費されます。
典型的な生産者と消費者のパターンを実装しようとしていますが、何かがうまくいきません。
スケルトンを書きましたが、スケルトンが期待どおりに動作しません。
メールプロデューサー.java
MailConsumer.java
そして最後にエグゼクター
MailExecutor.java
プログラムを実行すると、プロデューサとコンシューマを行き来して、それぞれのクラスに書かれている内容を出力し続けることが期待されます。しかし、代わりに、以下の行を出力した後、プログラムはハングアップするか何もしません。何がうまくいかないのですか?何か不足していますか?
出力 ...(出力は期待していたものではありません。何が問題なのですか?)
java - Java Executor、キューの最後/最後に新しいタスクを追加
新しいタスクをキューの一番上に追加するか一番下に追加するかを選択できる Executor が必要です。それを達成する最も簡単な方法は何ですか?
java - JavaExecutorの部分的なシャットダウン
アプリケーションで1つのクラシックExecutor
を使用しましょう。アプリケーションの多くの部分は、一部の計算にこのエグゼキュータを使用します。各計算はキャンセルできます。このために、shutdown()
またはshutdownNow()
エグゼキュータで呼び出すことができます。
しかし、Executorのタスクの一部のみをシャットダウンしたいと思います。悲しいことに、私はオブジェクトにアクセスできませんFuture
。それらは計算実装のプライベートな部分です(実際には、計算はアクターフレームワークjetlangによってサポートされています)
Executorラッパーのようなものが必要です。これは、計算に渡すことができ、実際のExecutorによってサポートされる必要があります。このようなもの:
または他のアイデア?
java - 指定された時間にJavaタスクをスケジュールします
Javaで特定の時間にタスクをスケジュールできるようにしたいと思います。は定期的な間隔で、指定された遅延の後にスケジュールする機能があることを理解していExecutorService
ますが、一定期間後ではなく、時間帯を探しています。
たとえば、Runnable
2:00に実行する方法はありますか、それとも今から2:00までの時間を計算し、その遅延の後に実行するようにランナブルをスケジュールする必要がありますか?
java - Java スケジュール済みエグゼキューターの精度
Java のスケジュールされたエグゼキューターを使用しているときに遭遇した特異性があり、私が経験したことが正常であるかどうか疑問に思っていました。
定義済みの 5 秒間隔で実行されるタスクをスケジュールする必要があります。これらのタスクの実行には時々 5 秒以上かかることが予想されますが、実行時間が 5 秒未満になると、バックアップされたタスクのリストがすばやく連続して実行され、追いつく必要があります。タスクを実行するときは、最初にスケジュールされた実行時間が何であったかを知ることが重要です ( で考えscheduledExecutionTime()
てjava.util.TimerTask
ください)。最後に、予定された時間と実際の時間の差を追跡して、スケジュールがいつ、どの程度ずれているかを特定する必要があります。
これまでのところ、Java executor を使用してこれらすべてを実装してきました。次のクラスは、一般的な考え方を示しています。
上記のコードを実行すると、ドリフト (理想的には可能な限り 0 に近づける必要があります) が数秒変動し、その結果、タスクが時期尚早または遅れて実行されることがわかります。これを約 150 分間実行した結果からグラフを作成しました。
だから私の最初の質問は、これが正常かどうかです。私の環境は、32 ビットの Windows XP と Java 1.5 update 21 で構成されています (ただし、Java 6 update 22 でも同様の結果が得られます)。
2 番目の質問は、ドリフトの量を減らす簡単な方法があるかどうかです。シンプルなjava.util.Timer
、または単にを使用するThread.sleep()
と、ドリフトは存在しません。
最後に、スケジュールされたエグゼキューターを使用するときに、スケジュールされた実行時間を追跡するより良い方法はありますか?