java - 线程创建开销包括哪些?
怪我咯
怪我咯 2017-04-18 09:35:45
0
3
590

在Java中,如果每当一个请求到达就创建一个新线程,开销是相当大的。在实际使用中,每个请求创建新线程的服务器在创建和销毁线程上花费的时间和消耗的系统资源,甚至可能要比花在实际处理实际的用户请求的时间和资源要多的多。

那么问题来了,创建一个线程到底要有哪些开销?各个开销耗时多么?哪个开销最耗时?
怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信(3)
伊谢尔伦

通常 pthread_create

いいねを押す +0
伊谢尔伦

時間に関しては、スレッドを作成するときにシステムにリソースを直接申請するため、システム関数を呼び出してリソースを割り当てるのにどれくらい時間がかかるかを言うのは困難です。
リソースに関しては、Java スレッドのスレッド スタックが占有するメモリは Java ヒープの外にあるため、Java プログラムによって制御されず、システム リソースによってのみ制限されます。スレッドのデフォルトのスレッド スタック サイズは 1M です。 (これをさせる場合は -Xss 属性を設定することで設定できますが、スタックオーバーフローの問題に注意してください) ただし、ユーザーリクエストごとに新しいスレッドが作成されると、1024 個のユーザーライトスレッドが 1 G のメモリを占有します。システムが比較的大規模な場合、サブシステムのリソースが不足し、最終的にはプログラムがクラッシュします。

追伸: 同じ理由で、Java プログラムで新しいスレッドを自由に開かないでください。特に高頻度のビジネスでは、スレッド プールを使用するようにしてください。そうしないと、メモリ不足やプログラムのクラッシュが発生しやすくなります。

いいねを押す +0
迷茫

オペレーティング システムにとって、スレッドの作成には非常にコストがかかります。同時に、スレッドの切り替え時にメモリ ページングを実行する必要があります。情報をメモリから再度読み取る必要があり、データの局所性が失われます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!