まず、ロック プールと待機プールの概念を紹介します。
最初にロック プールの概念を見てみましょう
同期ロックをめぐって競合する必要があるすべてのスレッドは、ロック プールに配置されます。たとえば、現在のオブジェクトのロックは取得されています。このロック プールで待機しているときに、前のスレッドが同期ロックを解放すると、ロック プール内のスレッドが同期ロックをめぐって競合します。スレッドが同期ロックを取得すると、レディ キューに入ります。 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 サイトの他の関連記事を参照してください。

选择一个Node的Docker镜像看起来像是一件小事,但是镜像的大小和潜在漏洞可能会对你的CI/CD流程和安全造成重大的影响。那我们如何选择一个最好Node.js Docker镜像呢?

跨域是开发中经常会遇到的一个场景,也是面试中经常会讨论的一个问题。掌握常见的跨域解决方案及其背后的原理,不仅可以提高我们的开发效率,还能在面试中表现的更加

什么是JPA?它与JDBC有什么区别?JPA(JavaPersistenceapi)是一个用于对象关系映射(ORM)的标准接口,它允许Java开发者使用熟悉的Java对象来操作数据库,而无需编写直接针对数据库的sql查询。而JDBC(JavaDatabaseConnectivity)是Java用于连接数据库的标准API,它需要开发者使用SQL语句来操作数据库。JPA将JDBC封装起来,为对象-关系映射提供了更方便、更高级别的API,简化了数据访问操作。在JPA中,什么是实体(Entity)?实体

JS 单例模式是一种常用的设计模式,它可以保证一个类只有一个实例。这种模式主要用于管理全局变量,避免命名冲突和重复加载,同时也可以减少内存占用,提高代码的可维护性和可扩展性。

Go框架是一组扩展Go内置库的组件,提供预制功能(例如Web开发和数据库操作)。流行的Go框架包括Gin(Web开发)、GORM(数据库操作)和RESTful(API管理)。中间件是HTTP请求处理链中的拦截器模式,用于在不修改处理程序的情况下添加身份验证或请求日志记录等功能。Session管理通过存储用户数据来保持会话状态,可以使用gorilla/sessions管理session。

JavaScript怎么判断数据类型?本篇文章给大家分享JS 判断数据类型的 8 种方式,有效帮助工作和面试,面试官看了微微一笑。

url模块和querystring模块是非常重要的两个URL处理模块。在做node服务端的开发时会经常用到。

本篇文章整理了20+Vue面试题分享给大家,同时附上答案解析。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

Dreamweaver Mac版
ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ホットトピック









