問題タブ [futuretask]
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 - ブロッキング API を使用する場合の Java での非同期プログラミング
ブロックしている特定の API を使用する Java プロジェクトに取り組んでいます。
結果を待っている間にブロックする必要がないように、非同期プログラミングとコールバックを使用したいと思います。JavaFuture
の使用を検討しましたが、それを使用できると思う唯一の方法は、get()
ブロックするメソッドを呼び出すことです。私は、非同期プログラミングを行うために他の方法を使用することにもオープンです。
私の現在のコードは次のようになります。
を使うFuture
としたら、このようにします。しかし、私の理解はget()
ブロッキングです。
get()
結果が利用可能になったときに自動的に呼び出されるコールバックによって関数が基本的に処理されるように、これを実装するにはどうすればよいでしょうか?
java - 1 つの将来のタスクで期待される結果が得られたら続行します
私は3つFutureTask<T>
のオブジェクトを持っています。それらが非同期で処理されることを望みます。ただし、FutureTasks のget()
メソッドの 1 つが返されないとすぐnull
に続行したいと思います。つまり、メソッド (ラッパー) が返され、他の 2 つの FutureTasks が処理されるまで待機しません。私は次のようなことを考えました:
他の2つのタスクが完了するのを待たずに戻るだけなので、例外がスローされると想定しているため、(get()によってスローされた)例外を適切な方法でキャプチャする方法がわかりません。さらに、コードが意図したとおりに機能するかどうかは疑問です。私は解決策に近づいていると感じていますが、何かが欠けています。
android - ボタンのクリック時に ExecutorService のタスクをキャンセルするにはどうすればよいですか?
ユーザーがクリックしてダウンロードできるアイテムのリストがあります。私はこのコードを持っています:
ユーザーが tasks.get(key).cancel(true); を呼び出してキャンセルをクリックすると、それぞれのダウンロードをキャンセルしようとしています。
しかし、私のタスクはキャンセルされません。
いくつかの質問:
アダプター クラスで将来のオブジェクトのリストを維持することで、何か問題がありますか?
ユーザーがボタンをクリックしたときにタスクをキャンセルするにはどうすればよいですか?
また、タスクがキャンセルされたことをどのように知ることができますか?
ExecutorService について読んだことがありますが、実装について少し混乱しています。
java - iTextを使用してTIFFをPDFに変換するマルチスレッドアプローチ
基本的に、itext を使用して tiff ファイルを pdf に変換しようとしていますが、これはかなり単純です。しかし、私が見ることができるTiffImage.getTiffImage
のは、より大きなファイルの実行に多くの時間がかかっていることです。
私の要件は、マルチスレッドソリューションを使用FutureTask
して提供することです。ExecutorService
これが私の現在のコードです:
そして変換方法は
しかし、私はで取得してNullPointerException
いfuture.get()
ます。問題は、実行が TiffImage.getTiffImage(tiffFile, pageNo) の終了を待っていないことです。したがって、イメージ リストを作成できません。どんな助けでも大歓迎です。
スタックトレース
java - FutureTask を割り当てることができる理由未来への反対変数?
これは、私を混乱させた本のJava Concurrency in Practiceからの抜粋です。
コードが示すように、fの型は Future ですが、ftの型は FutureTask です。なぜftを変数fに代入できるのでしょうか?
java - Java Spring で Future Task Threads を Atomic(Transactional) にする方法
各スレッドをアトミックにしようとしています。execute メソッドの後にプロキシ アノテーションを使用してトランザクションを開始および終了しようとしましたが、機能しませんでした。また、クラス レベルとメソッド レベルでトランザクション アノテーションを使用しようとしましたが、どちらも機能しませんでした。では、スレッドをアトミックにするにはどうすればよいですか。
テストクラス/ドライバークラス
私の呼び出し可能な実装
タスク実行コード
}
アクティブなトランザクションではないため、エラー メッセージは失敗しました。