Javaスレッドプールとマルチスレッドプログラミング - の理解とスレッドプールを作成します

JDK1.5は、タスクの提出をデカップリングの実装のため、スレッドプールに引き渡さ定義されたタスクの実行後に執行体制を導入しました。

して、スレッドプールはjava.util.concurrent  パッケージエグゼキューは、スレッドプールクラスファクトリメソッドを作成します。

-------------------------------------------------- ------------------------------

   作成したスレッドの再利用可能な固定数で、スレッドプールをアンバウンド形式のキュー共有これらのスレッドを実行する方法。

   静的なパブリックExecutorServiceの newFixedThreadPool(int型にnthreads)   nThreads -プール内のスレッドの数

 ExecutorServiceのプール= Executors.newFixedThreadPool(6)。

単一のワーカースレッド使用するExecutorの作成アンバウンド形式のキューをこのスレッドを実行する方法を。
静的なパブリックExecutorServiceの newSingleThreadExecutor()
ExecutorServiceのスレッドプール= Executors.newSingleThreadExecutor()。

 

   でスケジュールを作成します。与えられた遅延 runコマンドまたは定期的に実行するスレッドプールの3件のスレッドがあります。

 初期遅延は、インターバルタイマーはタイマータスク2秒であり、6秒です。

  Executors.newScheduledThreadPool(3).scheduleAtFixedRate(() - > { 
                    するSystem.out.println( "爆撃!" ); 
                    }、 6、2 、TimeUnit.SECONDS)。
    }

このスレッドを実行するために、アンバウンド形式のキューに、単一のワーカースレッドを使用するExecutorのを作成します。

静的なパブリックExecutorServiceの newSingleThreadExecutor()

-------------------------------------------------- ------------------------------

スレッドプールのフレームワークは、タスクを送信さまざまなビジネスニーズに応じて様々な方法を選択する2つの方法を提供します。

①てexecutor.execute()

   無効実行Runnableを  コマンド)

一部の将来の時点で指定されたコマンドを実行します。このコマンドは、スレッドまたはスレッドがして、新しいスレッドで実行するために呼ばれ、プールされている可能性があり  キュータの  実装決定。

②ExecutorService.submit()

<T> Future<T>
submit(Callable<T> task) 
実行のためのタスクの戻り値を送信し、保留中のタスクが接合未来を表して返します。
 Future<?> submit(Runnable task) 
実行用のRunnableタスクを送信し、そのタスクを表すFutureを返します。
<T> Future<T>
submit(Runnable task, T result) 
実行用のRunnableタスクを送信し、そのタスクを表すFutureを返します。

両方の方法は、スレッドプールのタスクに提出することができる、()メソッドは無効であり、それはキュータインタフェースで定義されているタイプの実行を返します

そして提出()メソッドは、インタフェースExecutorServiceの中で定義されている将来のオブジェクト保持演算結果を返します

 

https://www.jianshu.com/p/87bff5cc8d8c

深さ分析エグゼキュータの枠組み↓↓↓

https://blog.csdn.net/javazejian/article/details/50890554

おすすめ

転載: www.cnblogs.com/JMrLi/p/11209251.html