下面是一段简单的java多线程代码
public static void main(String[] args) throws Exception {
final Object lock="";
Thread t1=new Thread(){
public void run(){
try {
System.out.println("t1 wait begin");
synchronized (lock) {
lock.wait();
}
System.out.println("t1 wait end");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
t1.start();
Thread.sleep(5000);
System.out.println("main lock begin");
synchronized (lock) {
lock.notify();
Thread.sleep(10000);
System.out.println("main wait begin ");
lock.wait();
System.out.println("main wait end");
}
System.out.println("main lock end");
t1.join();
System.out.println("process exist");
}
输出:
t1 wait begin
main lock begin
main wait begin
t1 wait end
描述:
线程t1获取lock对象的监视器后,马上调用lock的wait方法,放弃了lock的监视器,
主线程获取lock对象的监视器后,调用lock的notify方法唤醒等待lock的监视器的线程(这里是t1)
之后睡眠10秒,然后调用lock的wait方法放弃lock的监视器。
结论:
1、wait,notify,notifyAll必须在当前线程获得监视器时才能调用,即这些方法必须在同步块中才能调用
2、t1线程,wait方法执行时,t1线程放弃lock对象的监视器,t1线程阻塞,导致同步块代码未执行完。
3、主线程中notify方法执行时,主线程唤醒在等待lock对象监视器的线程(随机的,t1线程只是被标记为可获取监视 器,但实际未获取,详情请看4),另外此方法并不阻塞而是立即返回。
4、主线程notify方法执行后,主线程仍然具有lock对象的监视器,而t1线程仍处于阻塞状态(虽然已经被主线程notify 了), 这点可以看代码,主线程睡眠10秒,而t1线程仍阻塞。只有当主线程调用wait方法,放弃lock的监视器后,
t1线程才真正获得监视器,接着主线程阻塞,而t1线程继续执行同步块中未执行的代码
5、因没有任何线程调用notify方法呼唤主线程了,所以主线程一直阻塞
分享到:
相关推荐
【以小见大】是一种文学创作手法,它通过描绘日常生活中的小事或小物,来揭示更深远的主题或深刻的道理。这种手法在各种文体中都常见,尤其在散文中更是运用得淋漓尽致。以《走一步,再走一步》这篇文章为例,作者...
文章“WebKit中两个小设计(以小见大)”通过介绍WebKit中两个具体的技术实现,深入浅出地剖析了其背后的设计概念,这对于理解WebKit的设计哲学乃至现代软件工程的设计原则都大有裨益。 首先,文章提到了“Private ...
以小见大记叙文.ppt
【以小见大】是一种常见的写作技巧,它通过描绘日常生活中的小事或小细节,来揭示更深远的主题或深刻的道理。这种技巧在文学创作中广泛使用,尤其在记叙文和散文中,能够使读者在平凡的故事中感受到不平凡的情感和...
作文如何“以小见大”.pdf
然而,“以小见大”这一哲学理念却告诉我们,正是这些被忽视的微小事物,往往蕴含着最深刻的道理和最伟大的价值。从古至今,无数文学作品、哲学思考,乃至日常生活的琐事,都在这一理念的指导下展现出别样的光芒。 ...
《经典编程【以小见大】900例C语言》是一份全面涵盖C语言编程实践的资源集合,旨在通过大量的实例帮助学习者深入理解和掌握C语言的核心概念、语法以及编程技巧。C语言作为计算机科学的基础语言之一,以其高效、灵活...
以小见大 无线宽带路由器功耗对比.pdf
- Atmega16单片机是AVR系列微控制器的一种,常用作教学和实际产品的原型设计。 - 该教学过程分为两个阶段:模仿阶段和创新阶段。 - 模仿阶段:学生通过学习硬件开发板、AVR Studio软件使用、程序编写及调试等基础...
本例子很好的很简单的解释了单片机的点阵显示原理 ,能以小见大 很典型
“大数据—小数据”问题:以小见大的洞察_陈国青.caj
经典编程900例(C语言) 涵盖ARRAYS,CMD_LINE,DATETIME,DOS_BIOS,FILES,FUNCTION,KEYBOARD,MACROS,MATH,MEMORY,STRINGS的实例说明。
C语言实现的唱片管理系统,意在以小见大,将现有的前沿技术和架构慢慢的在该系统中实现。 包括但不限于:本地文件、数据库、CS架构、redis、container、serverless、分布式等.zip 项目资源具有较高的学习借鉴价值,...
这份名为“体育产业周报-本周聚焦:以小见大,从NBA全明星赛看全球运动品牌营销的“军备竞赛”-200225.rar”的压缩包文件,包含了一份行业报告,重点关注了全球运动品牌在NBA全明星赛事中的营销策略。报告通过深入...
在讨论体育产业周报的内容之前,首先需要了解NBA全明星赛,它是一场全球瞩目的篮球盛事。这项赛事不仅是篮球爱好者的节日,同样也是全球运动品牌展示自我、推广产品和品牌形象的绝佳舞台。因此,从NBA全明星赛的角度...
在《粥里春秋》这篇文章中,作者以粥为线索,用其独特的视角和丰富的感情,讲述了一段关于粮食、农业劳动和传统文化传承的故事。通过不同年代的记忆碎片拼凑,折射出社会的发展变迁,以及人们对于食物、劳动态度的...
从抗日战争到改革开放,从科技发展到文化繁荣,每一段历史都是对孩子们最好的教材。这些历史故事,如同一盏盏明灯,照亮孩子们前行的道路,帮助他们建立正确的历史观、民族观和国家观。 "少年强,中国强",这不仅是...
在战火纷飞的第二次世界大战期间,法国的某个家庭经历了一段惊心动魄的时刻。伯诺德夫人的家庭,成为了一段历史故事中的主角,他们的英勇行为成为后人敬仰的典范。在《半截蜡烛》这篇课文里,我们不仅读到了一个关于...
总的来说,这篇作文以小见大,通过一次简单的购物之旅,展现了城市化进程中个体的体验和感受,同时也传达了亲情的温暖和传承的力量。它提醒我们,在快速发展的社会中,理解和关爱长辈的感受同样重要,而孩子们的成长...
同时,题目中的“读懂”二字,暗示了文章将包含一个理解的过程,读者期待着从作者的笔下看到怎样的一段心路历程。 在内容要求方面,文档强调了需要清晰描绘出理解的历程和感悟的深度。写作不仅是记录,更是思考和...