インタビュアー: sleep()、wait()、join()、yield() の違いを教えてください。
まず、ロック プールと待機プールの概念を紹介します。
最初にロック プールの概念を見てみましょう
同期ロックをめぐって競合する必要があるすべてのスレッドは、ロック プールに配置されます。たとえば、現在のオブジェクトのロックは取得されています。このロック プールで待機しているときに、前のスレッドが同期ロックを解放すると、ロック プール内のスレッドが同期ロックをめぐって競合します。スレッドが同期ロックを取得すると、レディ キューに入ります。 CPU リソースの割り当てを待ちます。
待機プールの概念を見てみましょう
wait() メソッドを呼び出すと、スレッドは待機プールに配置され、プール内で待機しているスレッドは待機プールに配置されません。同期ロックをめぐって競合します。 Notice() または NotifyAll() を呼び出した後でのみ、待機プール内のスレッドがロックの競合を開始します。notify() は待機プールからランダムにスレッドを選択してロック プールに入れますが、notifyAll() はすべてのスレッドを入れます。待機プールにある ロックプールに入れます。
sleep は Thread クラスの静的ローカル メソッドであり、wait は Object のローカル メソッドです。
sleep メソッドはロックを解放しませんが、wait メソッドはロックを解放し、待機キューに追加します。
sleep就是把cpu的执行资格和执行权释放出去,不再运行此线程,当定时事件结束再取回cpu资源,参与cpu的调度,获取到cpu资源后就可以继续运行了,而如果sleep时该线程有锁,那么sleep不会释放这个锁,而是把锁带着进入了冻结状态,也就是说其它需要这个锁的线程根本不可能获取到这个锁。也就是说无法执行程序,如果在睡眠期间其它线程调用了这个线程的interrupt方法,那么这个线程也会抛出interruptexception异常返回,这点和wait是一样的。
sleep メソッドは synchronized シンクロナイザーに依存しませんが、wait は synchronized キーワードに依存する必要があります。
sleep はウェイクアップする必要はありません (スリープ後にブロックを終了します) が、wait はウェイクアップする必要があります (指定された時間に他の人によって中断される必要はありません)。
sleep は通常、現在のスレッドのスリープ、または操作のポーリングと一時停止に使用されますが、wait は主に複数のスレッド間の通信に使用されます。
sleep は CPU 実行時間を放棄し、コンテキストの切り替えを強制しますが、wait はそうではありません。wait 後も、再度ロックを競合して実行を継続する可能性があります。
yield() 実行後、スレッドは直接準備完了状態となり、すぐに CPU の実行権を解放しますが、CPU の実行資格は保持したままであるため、次のことが考えられます。次回は CPU がスレッドのスケジューリングを実行し、このスレッドが実行権を取得して実行を継続します。
(学習ビデオ共有: java ビデオ チュートリアル)
join() が実行された後、スレッドはブロッキング状態に入ります。たとえば、スレッドの 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("线程执行完成"); }
元のリンク: https://blog.csdn.net/lxn1023143182/article/details/114134498
関連する推奨事項: Java 面接の質問と回答
以上がインタビュアー: sleep()、wait()、join()、yield() の違いを教えてください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

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

ホットトピック











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

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

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

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

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

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

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

翻訳者 | 企画:Zhu Xianzhong | Xu Jiecheng 開発者が信頼する他のソフトウェア開発ツールとは異なり、AI ツールにはトレーニング、構築、ホスティング、および使用の点でいくつかの特有のリスクがあります。 2022 年末に ChatGPT がリリースされて以来、インターネットには、ChatGPT を支持する議論と疑問を抱く議論がほぼ同じ割合で溢れています。好むと好まざるにかかわらず、AI は開発組織に浸透しつつあります。 AI 製品を開発したり、AI ツールを活用してコードを作成したりする予定がない場合でも、ソース コードの構築、テスト、実行に使用されるツールやプラットフォームに AI 製品が統合されている可能性があります。 AI ツールには、タスクの自動化による生産性の向上に影響を与える可能性のある固有のリスクがいくつかあります。こういったリスクは主に、
