Java - 为什么等待和通知是在Object类而不是Thread中声明的?
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net
以下是我认为有意义的一些想法:
1.wait和notify不仅仅是普通方法或同步工具,更重要的是它们是Java中两个线程之间的通信机制 。对语言设计者而言,如果不能通过Java关键字(例如synchronized)实现此通信机制,同时又要确保这个机制对每个对象可用,那么Object类则是正确的声明位置。记住同步和等待、通知是两个不同的领域,不要把它们看成是相同的或相关的。同步是提供互斥并确保Java类的线程安全,而wait和notify是两个线程之间的通信机制。
2.每个对象都可上锁,这是在Object类而不是Thread类中声明wait和notify的另一个原因。
3.在Java中为了进入代码的临界区,线程需要锁定并等待锁定,他们不知道哪些线程持有锁,而只是知道锁被某个线程持有,并且他们应该等待取得锁,而不是去了解哪个线程在同步块内,并请求它们释放锁定。
4.Java是基于监视器的思想,在Java中,所有对象都有一个监视器。
线程在监视器上等待,为执行等待,我们需要2个参数:
- 一个线程
- 一个监视器(任何对象)
在Java设计中,线程不能被指定,它总是运行当前代码的线程。但是,我们可以指定监视器(这是我们称之为等待的对象)。这是一个很好的设计,因为如果我们可以让任何其他线程在所需的监视器上等待,这将导致“入侵”,导致在设计并发程序时会遇到困难。请记住,在Java中,所有在另一个线程的执行中侵入的操作都被弃用了(例如stop方法)。
Java - 为什么等待和通知是在Object类而不是Thread中声明的?相关推荐
- Java基础知识(二)(Object类的常用方法、日期时间类、System类、StringBuilder类、包装类、Collection集合、Iterator迭代器、泛型、list集Set接口...)
文章目录 Java基础知识(二) 1.Object类的常用方法 1.1 toString方法 1.2 equals方法 1.3 Objects类 2.日期时间类 2.1 Date类 2.2 DateF ...
- java学习笔记6--类的继承、Object类
接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...
- Java基础学习总结(7)——Object类
2019独角兽企业重金招聘Python工程师标准>>> 一.Object类介绍 Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父 ...
- 第三次学JAVA再学不好就吃翔(part45)--Object类
学习笔记,仅供参考 文章目录 API概述 Object类 hashCode()方法 getClass()方法 toString()方法 equals()方法 ==与equals()方法的区别 API概 ...
- Java面向对象(接口、匿名内部类、object类、单例、多例)
1.1接口(抽象类与接口,优先使用接口) 抽象方法和全局常量的集合,使用interface定义,使用implements继承 接口可以多继承(可以向上强制转换) 接口只能有public,一般不写常量 ...
- 开课吧Java课堂:如何将用户定义的类存储于Collection中
为了简单,类集并没有被限制为只能存储内置的对象.完全相反的是,类集的能力是它能存储任何类型的对象,包括你所创建的类的对象.例如,考虑下面的例子,在这个例子中使用LinkedList存储信箱地址. // ...
- java 线程等待10_面试被问10个Java等待、通知、同步问题,直接躺下
1.什么时候需要Java同步? Java中的同步是一个重要的概念,因为Java是一种多线程语言,其中多个线程并行运行以完成程序执行.在多线程环境中,Java对象的同步变得极为重要,同步在Java中,可 ...
- 为什么 wait/notify/notifyAll 在 Object 类定义而不是 Thread 类?
作者:Yujiaao 来源:segmentfault.com/a/1190000019962661 一个较难回答的 Java 问题, Java 编程语言又不是你设计的,你如何回答这个问题呢?需要对 J ...
- java中所有类的父类Object类介绍
知识点-- Object类概述 目标: 了解Object的概述和常用方法 路径: Object类的概述 Object类中常用的2个方法 讲解: Object类的概述 java.lang.Object类 ...
最新文章
- 专题 13 IPC之信号量
- Winpcap进行抓包,分析数据包结构并统计IP流量
- boost::geometry::strategy::distance::haversine用法的测试程序
- cisco 《连接网络》实验wan综合实验_GNS3实验环境优化与安装
- 安卓百度地图附近poi搜索以及到指定poi的换乘方案
- 最小可行产品是什么_无论如何,“最小可行产品”到底意味着什么?
- css 矩形两边挖半圆
- 什么是互联网思维?给你最全面的解释
- c语言数字游戏程序,C语言实现数字游戏
- 《信号检测与估值理论》Matlab仿真,包括: 高斯-牛顿迭代法对正弦信号参数进行估计
- Windows Terminal美化增强指南
- PortableApps使用入门
- 计算机网络实验报告实验台,计算机控制实验台
- HTML5分级标题,最佳HTML5结构,其中标题/标题是文章标签外
- php中的refresh,PHP mysqli_refresh() 函数用法及示例
- 【学习笔记】C++STL和泛型编程-侯捷
- android 开发之蓝牙开发
- 使用 NGINX 搭建 RTMP 流媒体服务器实现直播功能
- ClickHouse settings final
- 了解RabbitMQ
热门文章
- java以太坊库web3j的maven插件
- pyinstall ImportError: No module named _bootlocale
- 【py spider】读取代理ip文件的几个函数 | 代理ip获取 | TXT
- 安卓手机反应慢又卡怎么办_OPPO手机越来越卡、反应慢怎么办?解决oppo手机卡顿反应慢的方法...
- 深度学习AI美颜系列---SpecialFace特效滤镜
- 无法写入最后一个_魔兽世界中颜值最高的十件传奇武器,最后一个至今无法超越...
- 安卓真机调试无授权信任窗口
- 使用迅雷代替SDK Manager快速下载Android SDK相关
- 32.将字符串转换为数字
- PS橡皮擦的小圆圈不见了