スレッドプール20210226を学習する理由について話す

バックグラウンド

手動でスレッドを作成することの欠点は何ですか?

  • 管理されていないリスク

システムリソースは限られており、誰もがさまざまなビジネスのスレッドを手動で作成でき、作成基準も異なります(たとえば、スレッドには名前がありません)。システムが実行されているとき、すべてのスレッドは必死にリソースを取得し、組織化されておらず、規律がなく、混沌としたシーンを想像することができます(問題が発生すると、簡単に見つけて解決することは当然不可能です)
魔法のパートナーがいる場合は、リクエストごとに作成しますスレッド。大量のリクエストが来ると、これは通常のトロイの木馬プログラムのように、冷酷なスクイーズによってメモリが使い果たされます(冷酷で、冷たく、不当にトラブルを起こしている)。

  • 頻繁な作成には費用がかかります

以前にリリースされた「AlibabaJavaマニュアル」にも1つあります
ここに画像の説明を挿入

スレッドプールの概念

プール

プール構造タイプ

线程池
	最大化高并发带来的性能提升,并最小化手动创建线程的风险,将多个线程统一在一起管理的思想
进程池
内存池
数据库连接池
消息队列(消息池)
请求池

プールの目的

为了最大化收益,并最小化风险,将资源统一在一起管理的思想

スレッドプールは、高い同時実行性によってもたらされるパフォーマンスの向上を最大化し、手動でスレッドを作成するリスクを最小限に抑え、複数のスレッドを一緒に管理するプーリングテクノロジーのアイデアによって実現されたスレッド管理テクノロジーです。主な目的は、スレッドを再利用し、スレッドとタスクの管理を容易にし、スレッドの作成とタスクの実行を切り離すことです。スレッドプールを作成して、作成されたスレッドを再利用し、スレッドの頻繁な作成と破棄によって引き起こされるリソース消費を削減できます。

スレッドプールの利点

リソース消費を削減します

スレッドプールを使用して、作成されたスレッドを管理および再利用して、スレッドの作成と破棄の消費を削減し、同時実行の最大数を制御できます。

応答速度を向上させる

タスクが到着すると、スレッドの作成を待たずにすぐに実行できます。

スレッドの管理性を向上させる

スレッドプールを使用すると、均一に割り当て、調整、監視できます。タスクの実行をスレッドの作成と使用から切り離します。タスクスレッドキューのキャッシュ戦略と拒否メカニズムを実装します。
スレッドプールはスレッド環境を分離できます。たとえば、トランザクションサービスと検索サービスが同じサーバー上にあり、2つのスレッドプールが別々に開かれている場合、トランザクションスレッドのリソース消費量は明らかに大きくなります。したがって、独立したスレッドプールを構成することにより、低速のトランザクションサービスと検索サービスが分離され、サービススレッドの相互影響を回避できます。

アプリケーションシナリオ

ログの保存(ファイルの読み取りおよび書き込み操作)

如在调用日志函数nlog(LEVEL_ERROR,"connect error");,并没有把内容进行落盘,而是把数据交给线程池(任务队列),然后由线程池里面的线程去任务队列中获取数据,进行落盘。这样做的原因是,磁盘比内存访问的速度要慢很多,用线程池方案就可以实现解耦,进而很大程度提高服务器写日志的效率。
日志的优化
	尽量精简日志
	给日志定级别
	适当的增加写日志线程的数量

ネットワークIOビジネス(データベース操作またはキャッシュ操作を含む)分析作業の後、スレッドプールとの非同期デカップリング

おすすめ

転載: blog.csdn.net/Narutolxy/article/details/114123675