この記事の内容は、Java で非同期呼び出しを実装するためのコード例に関するものであり、一定の参考価値があります。必要な友人は参考にしていただければ幸いです。
まず、私が遭遇した問題は、インターフェイスが呼び出されたときにキャッシュを更新する必要があることです。キャッシュの更新は高速かどうかに関係なく、非同期呼び出しを行う予定です。必要な結果を返します。キャッシュがいつ更新されるかについては、私が注意を払う必要があるものではありません
早速、コードについて話しましょう
public class MyExecutor { private ExecutorService executor = Executors.newCachedThreadPool() ; public void fun() throws Exception { executor.submit(new Runnable(){ @override public void run() { try { //要执行的业务代码,我们这里没有写方法,可以让线程休息几秒进行测试 Thread.sleep(10000); System.out.print("睡够啦~"); }catch(Exception e) { throw new RuntimeException("报错啦!!"); } } }); } }
public class Demo{ public static void main(String[] args) { MyExecutor myExecutor = new MyExecutor(); try { myExecutor.fun(); System.our.print("你先睡着,我先回家啦~"); }catch(Exception e) { throw new RuntimeException("业务程序报错啦!!"); } } }
わかりました、それがコードの終わり (追記: 手で入力する際に間違いがあった場合はご容赦ください)
メインメソッドを実行します
が最初に表示されます (あなたが先に眠ります、私はそうします)先に帰ってください~)
それから(十分寝てください~)
つまり、非同期実行が必要なメソッドが完了していない場合、メインプログラムはすでに結果を返しています。待機し続ける必要はありません。これにより、プログラムが最初に結果を返し、その後待機を必要としない退屈なタスクの実行を継続することができます。もちろん、非同期メソッドが実行されたかどうかを確認するメソッドをいくつか追加することもできます。
Executors クラスについて話しましょう
このクラスはスレッド プールを作成するために使用されます
いくつかのメソッドがあります
1. newFixedThreadPool() は、固定サイズ スレッド プールのサイズは、最大値に達しても変更されません。実行例外によりスレッドが終了した場合、スレッド プールは新しいスレッド
2 を追加します。newCachedThreadPool() はキャッシュ可能なスレッドを作成しますthread スレッド プール。スレッド プールのサイズがタスクの処理に必要なスレッドを超える場合、一部のアイドル スレッド (60 秒間タスクを実行していない) がリサイクルされます。タスクの数が増加すると、このスレッド プールは新しいスレッドをインテリジェントに追加できます。タスクを処理します。このスレッド プールは、スレッド プールのサイズを制限しません。スレッド プールのサイズは、システム (JVM) が作成できる最大スレッド サイズに完全に依存します。
3. newSingleThreadExecutor() は、シングルスレッドを作成します。スレッドプール。このスレッド プールには動作中のスレッドのみが含まれます。これは、すべてのタスクをシリアルに実行する単一のスレッドと同等です。唯一のスレッドが異常終了した場合、新しいスレッドがそれを置き換えます。このスレッド プールは、すべてのタスクが送信された順序で実行されることを保証します
#4. newScheduledThreadPool() は、サイズ無制限のスレッド プールを作成します。このスレッド プールは、タスクのタイミングと定期的な実行をサポートします5. newSingleThreadScheduledExecutor() はシングルスレッドのスレッド プールを作成します。このスレッド プールは、タスクのタイミングと定期的な実行をサポートします以上が非同期呼び出しを実装する Java コードの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。