まず、ロック プールと待機プールの概念を紹介します。
最初にロック プールの概念を見てみましょう
同期ロックをめぐって競合する必要があるすべてのスレッドは、ロック プールに配置されます。たとえば、現(xiàn)在のオブジェクトのロックは取得されています。このロック プールで待機しているときに、前のスレッドが同期ロックを解放すると、ロック プール內(nèi)のスレッドが同期ロックをめぐって競合します。スレッドが同期ロックを取得すると、レディ キューに入ります。 CPU リソースの割り當(dāng)てを待ちます。
待機プールの概念を見てみましょう
wait() メソッドを呼び出すと、スレッドは待機プールに配置され、プール內(nèi)で待機しているスレッドは待機プールに配置されません。同期ロックをめぐって競合します。 Notice() または NotifyAll() を呼び出した後でのみ、待機プール內(nèi)のスレッドがロックの競合を開始します。notify() は待機プールからランダムにスレッドを選択してロック プールに入れますが、notifyAll() はすべてのスレッドを入れます。待機プールにある ロックプールに入れます。
sleep は Thread クラスの靜的ローカル メソッドであり、wait は Object のローカル メソッドです。
sleep メソッドはロックを解放しませんが、wait メソッドはロックを解放し、待機キューに追加します。
sleep就是把cpu的執(zhí)行資格和執(zhí)行權(quán)釋放出去,不再運行此線程,當(dāng)定時事件結(jié)束再取回cpu資源,參與cpu的調(diào)度,獲取到cpu資源后就可以繼續(xù)運行了,而如果sleep時該線程有鎖,那么sleep不會釋放這個鎖,而是把鎖帶著進入了凍結(jié)狀態(tài),也就是說其它需要這個鎖的線程根本不可能獲取到這個鎖。也就是說無法執(zhí)行程序,如果在睡眠期間其它線程調(diào)用了這個線程的interrupt方法,那么這個線程也會拋出interruptexception異常返回,這點和wait是一樣的。
sleep メソッドは synchronized シンクロナイザーに依存しませんが、wait は synchronized キーワードに依存する必要があります。
sleep はウェイクアップする必要はありません (スリープ後にブロックを終了します) が、wait はウェイクアップする必要があります (指定された時間に他の人によって中斷される必要はありません)。
sleep は通常、現(xiàn)在のスレッドのスリープ、または操作のポーリングと一時停止に使用されますが、wait は主に複數(shù)のスレッド間の通信に使用されます。
sleep は CPU 実行時間を放棄し、コンテキストの切り替えを強制しますが、wait はそうではありません。wait 後も、再度ロックを競合して実行を継続する可能性があります。
yield() 実行後、スレッドは直接準備完了狀態(tài)となり、すぐに CPU の実行権を解放しますが、CPU の実行資格は保持したままであるため、次のことが考えられます。次回は CPU がスレッドのスケジューリングを?qū)g行し、このスレッドが実行権を取得して実行を継続します。
(學(xué)習(xí)ビデオ共有: java ビデオ チュートリアル)
join() が実行された後、スレッドはブロッキング狀態(tài)に入ります。たとえば、スレッドの join() を呼び出します。 A がスレッド B にある場合、スレッド B はブロッキング キューに入り、スレッド A にスレッドを終了または中斷するよう指示します。
public static void main(String[] args) throws InterruptedException { Thread t1=new Thread(()->{ try { Thread.sleep(4000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("休眠sleep線程"); }); t1.start(); t1.join(); System.out.println("線程執(zhí)行完成"); }
元のリンク: https://blog.csdn.net/lxn1023143182/article/details/114134498
関連する推奨事項: Java 面接の質(zhì)問と回答
以上がインタビュアー: sleep()、wait()、join()、yield() の違いを教えてください。の詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover
寫真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中國語版
中國語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











ノード用の Docker イメージの選択は些細なことのように思えるかもしれませんが、イメージのサイズと潛在的な脆弱性は、CI/CD プロセスとセキュリティに大きな影響を與える可能性があります。では、最適な Node.js Docker イメージを選択するにはどうすればよいでしょうか?

クロスドメインは開発においてよく遭遇するシナリオであり、インタビューでもよく議論される問題でもあります。一般的なクロスドメイン ソリューションとその背後にある原則を習(xí)得すると、開発効率が向上するだけでなく、面接でのパフォーマンスも向上します。

JS シングルトン パターンは、クラスのインスタンスが 1 つだけであることを保証する、一般的に使用される設(shè)計パターンです。このモードは主に、名前の競合や繰り返しの読み込みを避けるためにグローバル変數(shù)を管理するために使用され、メモリ使用量を削減し、コードの保守性とスケーラビリティを向上させることもできます。

Go フレームワークは、Go の組み込みライブラリを拡張するコンポーネントのセットで、事前に構(gòu)築された機能 (Web 開発やデータベース操作など) を提供します。人気のある Go フレームワークには、Gin (Web 開発)、GORM (データベース操作)、RESTful (API 管理) などがあります。ミドルウェアは、HTTP リクエスト処理チェーンのインターセプター パターンであり、ハンドラーを変更せずに認証やリクエストのログ記録などの機能を追加するために使用されます。セッション管理は、ユーザー データを保存することでセッションの狀態(tài)を維持します。ゴリラ/セッションを使用してセッションを管理できます。

JPAとは何ですか? JDBC との違いは何ですか? JPA (JavaPersistence API) は、オブジェクト リレーショナル マッピング (ORM) の標準インターフェイスです。これにより、Java 開発者は、データベースに対して SQL クエリを直接記述することなく、使い慣れた Java オブジェクトを使用してデータベースを操作できるようになります。 JDBC (JavaDatabaseConnectivity) は、データベースに接続するための Java の標準 API であり、開発者は SQL ステートメントを使用してデータベースを操作する必要があります。 JPA は JDBC をカプセル化し、オブジェクト リレーショナル マッピングのためのより便利で高レベルの API を提供し、データ アクセス操作を簡素化します。 JPA ではエンティティとは何ですか?実在物

JavaScript はデータ型をどのように決定するのでしょうか?この記事では、仕事や面接に効果的に役立つ、JS を使用してデータ型を決定する 8 つの方法を紹介します。

URL モジュールとクエリ文字列モジュールは、2 つの非常に重要な URL 処理モジュールです。ノードサーバーを開発するときによく使用されます。

この記事では、基本的な知識を整理し、PHP の知識の蓄えを強化するのに役立つ、PHP の面接でよくある質(zhì)問 100 個をまとめて共有します (回答も共有)。一定の參考値があるので、困っている友達が參考になれば幸いです。
