社区
Java SE
帖子详情
wait()、notify()、notifyAll()在使用是对象锁和调用这些方法的对像必须要一直?
程序猿老高
博客专家认证
2016-12-21 04:42:43
wait()、notify()、notifyAll()在使用是对象锁和调用这些方法的对像必须要一直吗?
...全文
301
3
打赏
收藏
wait()、notify()、notifyAll()在使用是对象锁和调用这些方法的对像必须要一直?
wait()、notify()、notifyAll()在使用是对象锁和调用这些方法的对像必须要一直吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
miaoch
2018-11-12
打赏
举报
回复
锁必须是一致的。调用方法的对象没有要求,因为根本没有调用对象一说(一般不是让你指定某个对象调用,你要做的只是 线程.start())。你可以在一个线程里对同一个锁既wait(),又notify(),但是要保证wait()之后,能有其他线程帮你唤醒,即其他线程调用notify()。
SmilngCobra
2018-11-09
打赏
举报
回复
这三个方法的调用必须用在设置对象锁的对象上 ,表明将持有该对象锁的线程挂起或者唤醒一个,这个唤醒是随机的,或者唤醒所有挂在这个对象上的线程。如果对象没有设置对象锁而使用这三个方法就会报错
qq_39936465
2018-11-09
打赏
举报
回复
引用 0 楼 wangshuxuncom 的回复:
wait()、notify()、notifyAll()在使用是对象锁和调用这些方法的对像必须要一直吗?
不知道你说的一直是什么意思,wait(),notify()一般都要配对不然会死锁,进程当然也可以结束,需要设置判断条件。
JAVA并发编程核心技术精讲
[JAVA工程师必会知识点之并发编程]1、现在几乎100%的公司面试都
必须
面试并发编程,尤其是互联网公司,对于并发编程的要求更高,并发编程能力已经成为职场敲门砖。2、现在已经是移动互联和大数据时代,对于应用程序的性能、处理能力、处理时效性要求更高了,传统的串行化编程无法充分利用现有的服务器性能。3、并发编程是几乎所有框架的底层基础,掌握好并发编程更有利于我们学习各种框架。想要让自己的程序执行、接口响应、批处理效率更高,
必须
使用
并发编程。4、并发编程是中高级程序员的标配,是拿高薪的必备条件。 【主讲讲师】尹洪亮Kevin:现任职某互联网公司首席架构师,负责系统架构、项目群管理、产品研发工作。10余年软件行业经验,具有数百个线上项目实战经验。擅长JAVA技术栈、高并发高可用伸缩式微服务架构、DevOps。主导研发的蜂巢微服务架构已经成功支撑数百个微服务稳定运行【推荐你学习这门课的理由:知识体系完整+丰富学习资料】1、 本课程总计122课时,由五大体系组成,目的是让你一次性搞定并发编程。分别是并发编程基础、进阶、精通篇、Disruptor高并发框架、RateLimiter高并发访问限流吗,BAT员工也在学。2、课程附带附带3个项目源码,几百个课程示例,5个高清PDF课件。3、本课程0基础入门,从进程、线程、JVM开始讲起,每一个章节只专注于一个知识点,每个章节均有代码实例。 【课程分为基础篇、进阶篇、高级篇】一、基础篇基础篇从进程与线程、内存、CPU时间片轮训讲起,包含线程的3种创建
方法
、可视化观察线程、join、sleep、yield、interrupt,Synchronized、重入
锁
、
对象
锁
、类
锁
、
wait
、
notify
、线程上下文切换、守护线程、阻塞式安全队列等内容。二、进阶篇进阶篇课程涵盖volatied关键字、Actomic类、可见性、原子性、ThreadLocal、Unsafe底层、同步类容器、并发类容器、5种并发队列、COW容器、InheritableThreadLocal源码解析等内容。三、精通篇精通篇课程涵盖JUC下的核心工具类,CountDownLath、CyclicBarrier、Phaser、Semaphore、Exchanger、ReentrantLock、ReentrantReadWriteLock、StampedLock、LockSupport、AQS底层、悲观
锁
、乐观
锁
、自旋
锁
、公平
锁
、非公平
锁
、排它
锁
、共享
锁
、重入
锁
、线程池、CachedThreadPool、FixedThreadPool、ScheduledThreadPool、SingleThreadExecutor、自定义线程池、ThreadFactory、线程池切面编程、线程池动态管理等内容,高并发设计模式,Future模式、Master Worker模式、CompletionService、ForkJoin等课程中还包含Disruptor高并发无
锁
框架讲解:Disruptor支持每秒600万订单处理的恐怖能力。深入到底层原理和开发模式,让你又懂又会用。高并发访问限流讲解:涵盖木桶算法、令牌桶算法、Google RateLimiter限流开发、Apache JMeter压力测试实战。 【学完后我将达到什么水平?】1、 吊打一切并发编程相关的笔试题、面试题。2、 重构自己并发编程的体系知识,不再谈并发色变。3、 精准掌握JAVA各种并发工具类、
方法
、关键字的原理和
使用
。4、 轻松上手写出更高效、更优雅的并发程序,在工作中能够提出更多的解决方案。 【面向人群】1、 总感觉并发编程很难、很复杂、不敢学习的人群。2、 准备跳槽、找工作、拿高薪的程序员。3、 希望提高自己的编程能力,开发出更高效、性能更强劲系统的人群。4、 想要快速、系统化、精准掌握并发编程的人群。【课程知识体系图】
为什么
wait
,
notify
和
notify
All 这些
方法
不在 thread 类里面?
Java提供的
锁
是
对象
级的而不是线程级的,每个
对象
都有
锁
,通过线程获得。简单的说,由于
wait
,
notify
,
notify
All都是
锁
级别的操作,所以把他们定义在object类中因为
锁
属于
对象
。 如果
wait
,
notify
和
notify
All 这些
方法
在 thread 类里面会有什么问题?
wait
方法
仍然可以使当前线程挂起,但问题是挂起后怎么被其他线程唤醒(唤醒线程时需要知道要唤...
为什么
wait
和
notify
方法
要在同步块中
调用
?
调用
notify
()或
notify
All()
方法
的原因通常是,
调用
线程希望告诉其他等待中的线程:"特殊状态已经被设 置"。
wait
()
方法
强制当前线程释放
对象
锁
。在
调用
对象
的
notify
()和
notify
All()
方法
之前,
调用
线程
必须
已经得到该
对象
的
锁
。因此,
必须
在某 个
对象
的同步
方法
或同步代码块中才能
调用
该
对象
的
notify
()或
notify
All()
方法
。1. 只有在
调用
线程拥有某个
对象
的独占
锁
时,才能够
调用
该
对象
的
wait
(),
notify
()和
notify
All()方 法。
wait
、
notify
、
notify
All的理解与
使用
目录基础知识
wait
notify
notify
All
wait
()与
notify
()操作会释放
锁
吗?
wait
/
notify
消息通知潜在的一些问题总结:生产者-消费者模型的实现 基础知识 Java 中,可以通过配合
调用
Object
对象
的
wait
()
方法
和
notify
()
方法
或
notify
All()
方法
来实现线程间的通信。 在线程中
调用
wait
()
方法
,将阻塞当前线程,直至等到其他线程
调用
了
调用
notify
()
方法
或
notify
All()
方法
进行通知之后,当前线程才能从
wait
()
为什么
wait
,
notify
和
notify
All这些
方法
不在thread类里面?
线程可以在
对象
上等待(通过
wait
()
方法
),并且其他线程可以通知等待中的线程(通过
notify
()或
notify
All()
方法
)。因此,通过将
wait
()、
notify
()和
notify
All()
方法
定义在Object类中,Java提供了一种通用且灵活的方式来实现线程之间的协作与通信。在Java中,
wait
()、
notify
()和
notify
All()
方法
是用于线程之间的协调与通信的机制,它们不在Thread类中,而是在所有
对象
的基类Object中定义。
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章