問題タブ [executors]
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 - 長時間実行されているプロセッサを非同期で実行し、同じスレッドから使用する方法は?
基本的に、openoffice ソフトウェアに接続するためのドライバーとして機能する OfficeManger というクラスがあります。これは常に接続されている必要があるため、コンバーターを使用してドキュメントを変換できます。Web アプリケーションの開始時に OpenOfficeProcess を開始すると、正常に開始されます。しかし、init() で実行されているエグゼキュータが別のスレッドにあるように見え、OfficeManager の実行中のインスタンスを取得できませんでした。このインスタンスを別のクラスから呼び出してコンバーター メソッドを使用できるように、独自のスレッドで実行する方法を教えてください。
OpenOfficeプロセッサー
事務長
java - スロットリング/スループット制御を備えた Java Executor
スロットリング/スループット/ペーシングの制限を指定できる Java Executor を探しています。たとえば、1 秒間に処理できるタスクは 100 個までです。さらに多くのタスクが送信された場合、それらはキューに入れられて後で実行されます。これの主な目的は、外部の API またはサーバーにヒットしたときに制限にぶつからないようにすることです。
ベース Java (私がチェックしたので疑わしい) または他の信頼できる場所 (Apache Commons など) のいずれかがこれを提供するのか、それとも自分で作成する必要があるのか 疑問に思っています。軽量なものが望ましいです。自分で書いてもかまいませんが、「標準」バージョンがどこかにある場合は、少なくとも最初にそれを見てみたいと思います。
unit-testing - Executor のモック化されたインスタンスを別のクラスで取得できません
java.util.concurrent パッケージから ExecutorService と Executors をモックしようとしています。
オブジェクトをモックしている同じクラス (テスト クラス) 内でオブジェクトを取得しようとすると、モックされたオブジェクトを取得できます。ただし、モックされたオブジェクトを別のクラス (テストしたいクラス) で取得しようとすると、java.util.concurrent から実際のオブジェクトが返されます。以下はコード スニペットです。
テストしたいクラス:
私の Test クラスは次のようになります。
MyClassTest.testMyMethod() が以下の場合、モックされたオブジェクトを返します。
ただし、テスト メソッドを変更して myClass.myMethod() を呼び出すと、myMethod() のモック インスタンスではなく実際のインスタンスが返されます。
myClass.myMethod で Executors/ExecutorService のモック化されたインスタンスを取得することを期待しています。
これは予想される動作ですか?誰かが動作を説明できますか? 何か不足していますか?
java - newSingleThreadExecutor および ThreadFactory が使用されている場合は順次
私は何かについて理解しようとしています-以下に述べられている方法は、言及されてnewSingleThreadExecutor
いない場合にタスクを順次実行します。ThreadFactory
無制限のキューで動作する単一のワーカー スレッドを使用する Executor を作成します。(ただし、シャットダウン前の実行中に障害が発生してこの単一のスレッドが終了した場合、後続のタスクを実行するために必要に応じて新しいスレッドが代わりに使用されることに注意してください。) タスクは順次実行されることが保証されており、複数のタスクがアクティブになることはありません。いつでも。それ以外の同等のものとは異なり、newFixedThreadPool(1)
返されたエグゼキューターは、追加のスレッドを使用するために再構成できないことが保証されています。
無制限のキューで動作する単一のワーカー スレッドを使用する Executor を作成し、必要に応じて提供された ThreadFactory を使用して新しいスレッドを作成します。それ以外の同等のものとは異なり、newFixedThreadPool(1, threadFactory)
返されたエグゼキューターは、追加のスレッドを使用するために再構成できないことが保証されています。
パラメーター:
しかし、以下の例を考えると、私は ThreadFactory を使用しています:
シーケンシャルを尊重していないようです。スレッドの優先度が同じで、ランダムに選択し始めているためですか? ファクトリを使用しているときに発生した場合、Java ヘルプからは明確ではありません。
ありがとう。
今まで得た答えをありがとう。これがより多くのコードと説明です。高負荷状態 (1000 件のスレッドが送信された) のログで発見したことは、最初に送信されたスレッドが、他のスレッドが後で送信された後に開始されたことです。
この例は簡略化されていますが、MyThread.run メソッドには、ロギングを遅らせるコードはありません。
- 1:00:01.100 DEB 新しいスレッド[id:500]
- 1:02:01.160 DEB 新しいスレッド[id:900]
- 1:03:01.200 WAR 開始スレッド [thID:900]
- 1:04:02.200 WAR 開始スレッド [thID:500]
java - Executor 使用時の GC チューニング
cachedThreadPool
(を使用するサーバー側アプリケーションがありますExecutors.newCachedThreadPool
。しかし、GC が頻繁に実行され、GC が からスレッドを消去している可能性があるため、パフォーマンスが低下することがcachedpool
あります。このシナリオで GC を調整する方法はありますか?
java - Java プログラムが終了しない理由
以下のコードは、ExecutorCompletionService
fromJava Concurrency
フレームワーク (使用されている IDE は Netbeans) の使用をチェックします。
しかし、プログラムは終了しません。なんで?