下面是一段简单的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全明星赛的角度...
课文以“半截蜡烛”为题,揭示了故事的核心,它不仅是一个简单的日常用品,更承载着重要的情报,关系到战争的胜负。 在故事中,“半截蜡烛”的特别之处在于它内部藏着盟军的一份绝密情报,这份情报对于战争的走向至...
总的来说,《散步》这篇课文通过简单的散步活动,展示了亲情的温暖与力量,弘扬了尊老爱幼的传统,同时也引导学生学习并运用以小见大的写作技巧,让读者在平凡中看到伟大,在小事中感受到深沉的情感。这不仅是语文...
总的来说,这篇作文以小见大,通过一次简单的购物之旅,展现了城市化进程中个体的体验和感受,同时也传达了亲情的温暖和传承的力量。它提醒我们,在快速发展的社会中,理解和关爱长辈的感受同样重要,而孩子们的成长...
这篇通讯描绘了第二次世界大战期间,1944年9月19日发生在贝尔格莱德的一段感人故事。故事的主要人物是一位老妇人玛利·育乞西和一名牺牲的苏联红军战士契柯拉耶夫。在德军猛烈炮火的威胁下,老妇人不顾个人安危,...
- **以小见大**:选取一个具体的事例来体现主题,使文章更具有说服力和感染力。 - **具体翔实**:详细描绘细节,展现个人情感和思考,增强文章的可读性。 - **点题技巧**:文章中适时点题,揭示中心思想,使阅卷...