java – 如何在非线程的对象上调用wait()和notify()方法?
如何在不是线程的对象上调用wait()和notify()方法?那真的没有意义,是吗?
当然,它必须有意义,因为这两种方法可用于所有Java对象.有人可以提供解释吗?我无法理解如何使用wait()和notify()来理解线程之间的通信. 解决方法
锁定是关于保护共享数据.
锁定在受保护的数据结构上.线程是访问数据结构的东西.锁定在数据结构对象上,以防止线程以不安全的方式访问数据结构. 任何对象都可以用作内部锁(意味着与synchronized一起使用).这样,您可以通过将synchronized修饰符添加到访问共享数据的方法来保护对任何对象的访问. 在用作锁的对象上调用wait和notify方法.锁是一个共享的通信点: >当一个有锁的线程调用notifyAll时,等待同一个锁的其他线程会收到通知.当具有锁定的线程在其上调用notify时,其中一个等待同一锁的线程会收到通知. 请参阅Oracle tutorial on guarded blocks,Drop类是共享数据结构,使用Producer和Consumer runnables的线程正在访问它.锁定Drop对象控制线程如何访问Drop对象的数据. 线程在JVM实现中被用作锁,建议应用程序开发人员避免使用线程作为锁.例如,documentation for Thread.join说:
Java 5引入了实现java.util.concurrent.locks.Lock的显式锁.这些比隐式锁更灵活;有类似于wait和notify(等待和信号)的方法,但是它们在条件上,而不在锁上.具有多个条件使得可以仅针对等待特定类型的通知的那些线程. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – 使用Reactor选择与键匹配的事件
- Java 8中可选类型的有效使用
- java – @CompoundIndex在Spring Data MongoDB中不起作用
- java – 基于内部类的类型参数的类型声明
- java-排序算法实现:冒泡排序,选择排序,插入排序
- java – ServletRequest中的会话变量
- java – SetVisible(false)更改我的Panel中组件的布局
- java – 在JSP页面中获取maxInactiveInterval值
- java – 如何使用Floyd-Steinberg抖动将24位PNG转换为3位PN
- java代码块之简易qq登录界面及按钮颜色设置代码