私はcachedthreadpoolを使用しているときにスレッドの数を指定するためのパラメータなしでドキュメントをチェックしましたが、システムリソースが使い果たされるまで、スレッド数が増えて増加することを意味しますか?newCachedThreadPoolにプール内のスレッド番号の上限がありませんか?
0
A
答えて
0
すべてのリソースを消費するのかどうかはわかりませんが、無制限です(Integer.MAX_VALUE
スレッドをスピンアップできない限り)。可能であれば、スレッドを再利用し、未使用のスレッドを削除します。あなたは、単にコンストラクタを自分で使用することができますしかし:
ExecutorService myPool = new ThreadPoolExecutor(0, 30, //30 thread cap
60L, TimeUnit.SECONDS, //thread expiration time
new LinkedBlockingDeque<>(), //infinite queue, can use other synchronous collections
r -> new Thread(r, /* thread name */)); //thread factory
0
newCachedThreadPool
背後にある考え方は同じではなく、新しいスレッドを作成する再利用できるように短命のスレッドを作成することです。
スレッドの数がInteger.MAX_VALUE
に相当するシナリオがあるとします。まだ使用可能なCPUコアの数は、下記のコードを1として4
を言うことになります。
はpublic static ExecutorService newCachedThreadPool() {
return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
60L, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>());
}
newCachedThreadPool()
方法は、内部Integer.MAX_VALUE
としてmaximumPoolSize
と60secondなどkeepAlive
時間で新しいThreadPoolExecutor
を作成します。
keepAlive
のjavadocが示唆:スレッドの数がコアよりも多い場合
keepAliveTimeが、これは超過したアイドル状態のスレッドが終了する前に新しいタスクを待機する最大時間です。スレッドの数が使用可能なCPUコア以上であれば、余分なスレッドが終了とマークされる前にのみ60secsのためにライブになることを意味し
。
したがって、newCachedThreadPool()
がシステムリソースを完全に消費させるようなシナリオはありません。
関連する問題
- 1. nsarrayの番号がありません
- 2. 配列内に同じ番号がありません
- 3. なぜg ++コンパイルエラーの行番号がありませんか?
- 4. ASP.NETコアに例外の例外番号がありません
- 5. スタックトレースにはAzure webroleプロジェクトの行番号がありません
- 6. 注文番号の配列に要素がありません。
- 7. Angular2クラスのコンストラクタエラー:番号のプロバイダがありません
- 8. ファブリックcrashlyticsログの行番号の問題がありません
- 9. ASP.Netスタックトレースに行番号がありません。 PDBファイルがあります
- 10. Podioフィルターの結果がありません外部ID番号
- 11. IPAアーカイブのバージョン番号が正しくありません
- 12. インデックスのページ番号が正しくありません
- 13. ASP.NETサーバーエラーの行番号がありません
- 14. テーブルとプライマリキーの番号が正しくありません
- 15. java.lang.UnsupportedClassVersionError:.classファイルのバージョン番号が正しくありません
- 16. Fastparse解析エラーの列番号がありません
- 17. 郵便番号:必須のリクエストパート 'ファイル'がありません
- 18. Log4NetとMonoにファイル名と行番号がありません
- 19. itextsharp - 継続ページにページ番号がありません。C#
- 20. Asp.net 3.5のプロセス内のスレッドのDefalultがありません。
- 21. Androidの受信トレイにあるSMSには番号がありません
- 22. シリアル番号プールからシリアル番号をクライアントに割り当てる
- 23. スタックおよびリンクリストのJAVAに番号がありませんか?
- 24. newCachedThreadPoolはどのようにスレッドを再利用しますか?
- 25. 子スレッドにモデルデータがありません
- 26. スカラ上限:値がパラメータ型のメンバではありません
- 27. OSX上のAWSスキーマ変換ツール - 権限がありません
- 28. 番号入力が整数ではありません。
- 29. Proguard retrace行番号がありません
- 30. スレッド "main"のTinyos例外java.lang.UnsupportedClassVersionError:.classファイルのバージョン番号が正しくありません