問題タブ [scheduledexecutorservice]
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 ScheduleExecutorService タイムアウト タスク
ある間隔でいくつかのタスクをスケジュールし、指定された時間以上かかるタスクを強制終了する必要があります。
コード:
上記の例では、他のタスクの実行を妨げずに、5 秒以上かかるタスク (LongTask) を強制終了したいと考えています。これを達成するための最良の方法は何ですか?
java - アプリ起動時にバックグラウンドスレッドを起動する方法
以下は私のインターフェースです -
これは私のインターフェースの実装です -
以下は私の工場コードです -
今、私はTempClient
このようなインスタンスを取得するファクトリを持っているので、顧客は私たちのコードを呼び出すときに以下のように私たちのファクトリを使用します.
以下は私のバックグラウンドスレッドコードです-
問題文:-
- これで、URL からデータをフェッチし、解析して変数に格納するバックグラウンド スレッドがバックグラウンドで実行されます。ここで私が望むのは、顧客がファクトリを使用してコードを使用するための呼び出しを開始したらすぐに、バックグラウンド スレッドを開始することです。そこで、バックグラウンド スレッド呼び出しをファクトリ
getInstance
メソッドに入れることができると考えました。
java - マップが存在するときはいつでもマップからデータを取得する方法は?
以下は、バックグラウンドスレッドを開始する私の工場コードですTempScheduler
-
これで、顧客は上記のファクトリを使用してこのようにコードを呼び出します。彼らは Client インスタンスを一度だけ取得し、そのインスタンスを使用しread
て実装内のメソッドを呼び出します -
以下は、URL からデータを取得し、解析してクラス変数に格納するバックグラウンド スレッド コードです。
URL からのデータを解析した後、上記のバックグラウンド スレッドはClientData
、セッターを使用してクラスの変数に結果を格納します。以下は私のClientData class
です。
問題文:-
ここで興味深い部分があります。ご覧のとおり、顧客は上記のファクトリを使用してコードを呼び出し、getInstance()
メソッドを呼び出すとすぐに、URL からデータを取得して解析するバックグラウンド スレッドが開始されます。クラス変数に格納します。しかし、getInstance()
メソッドが実行された後、彼らはread method
私のクライアントコードで即座に呼び出しを行います..
そして、実装コードでバックグラウンド スレッドによって設定された変数を使用することになっています。read
メソッドを使用する私の実装コードはCallableTaks
、future.get
自動的にcall
以下のメソッドになります。以下のクラスでは、バックグラウンド スレッドによって設定された変数値を使用することになっています。getPrimaryMapping
以下のコードでメソッドを使用して値を取得する必要があります。
このアプローチの問題は、顧客がインスタンスを取得するために初めてファクトリを呼び出すとすぐに、URL からデータを取得して解析し、データをクラス変数に格納するバックグラウンド スレッドを開始することですが、それはread
私の実装クラスのメソッドを即座に呼び出します..
これで初めて、バックグラウンド スレッドがまだデータを解析しているが、実際の呼び出しが 内に来て、メソッドcall method
からデータを取得しようとするが、getPrimaryMapping
何もない可能性がありますよね? なぜbcozはまだデータを解析しています..では、解析が完了したら、顧客がコードを呼び出すときはいつでも、呼び出しメソッドで変数値のみを取得できるようにするにはどうすればよいですか。
そして、2回目は大丈夫です..データはメモリにあるので、最初の時間だけが問題です..
これを行う方法はありますか?
java - データが利用可能な場合、マップからデータを取得するにはどうすればよいですか?
コードで Java Callable Future を使用しています。以下は、フューチャーと呼び出し可能オブジェクトを使用する私のメイン コードです。
以下はTask
Callable インターフェースを実装する私のクラスで、このクラスはClientData
クラスメソッドからデータを取得する必要があります。ClientData
また、セッターを使用してクラスにデータを設定するバックグラウンド スレッドがあります。
ClientData
以下は、URL からのデータを解析してクラスに値を設定するバックグラウンド スレッドで、 10 分ごとに実行されます。
そして以下は私のClientData
クラス です
問題文:-
私が直面している唯一の問題は、プログラムを初めて起動するときはいつでも、URL からのデータを解析するバックグラウンド スレッドを開始することです。同時に、それは私のクラスcall
のメソッドに入ります。Task
そして、以下の行は例外をスローします。なぜですか? bcoz 私のバックグラウンド スレッドはまだデータを解析しており、その変数を設定していません。
この問題を回避するにはどうすればよいですか? これを行うためのより良い効率的な方法はありますか?
java - どちらが優れているか - SchedulerExecutorService または Quartz api
指定された遅延の後、指定された間隔でタスクを実行したい。
SchedulerExecutorService を使用すると、スレッドを使用するため、タスクの実行が少し遅れます。
実行を遅らせる余裕はありません。指定された正確な間隔で実行するにはどうすればよいですか?
Quartzライブラリはどうですか?このライブラリは目的を解決しますか?
私は Quartz ライブラリについてあまり知らないので、SchedulerExecutorService と Quartz api の違いは何ですか?
ノート:
また、SchedulerExecutorService を使用して遅延が発生する理由についても質問しました。参照してください。