分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击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中声明的?相关推荐

  1. 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 ...

  2. java学习笔记6--类的继承、Object类

    接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...

  3. Java基础学习总结(7)——Object类

    2019独角兽企业重金招聘Python工程师标准>>> 一.Object类介绍 Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父 ...

  4. 第三次学JAVA再学不好就吃翔(part45)--Object类

    学习笔记,仅供参考 文章目录 API概述 Object类 hashCode()方法 getClass()方法 toString()方法 equals()方法 ==与equals()方法的区别 API概 ...

  5. Java面向对象(接口、匿名内部类、object类、单例、多例)

    1.1接口(抽象类与接口,优先使用接口) 抽象方法和全局常量的集合,使用interface定义,使用implements继承 接口可以多继承(可以向上强制转换) 接口只能有public,一般不写常量 ...

  6. 开课吧Java课堂:如何将用户定义的类存储于Collection中

    为了简单,类集并没有被限制为只能存储内置的对象.完全相反的是,类集的能力是它能存储任何类型的对象,包括你所创建的类的对象.例如,考虑下面的例子,在这个例子中使用LinkedList存储信箱地址. // ...

  7. java 线程等待10_面试被问10个Java等待、通知、同步问题,直接躺下

    1.什么时候需要Java同步? Java中的同步是一个重要的概念,因为Java是一种多线程语言,其中多个线程并行运行以完成程序执行.在多线程环境中,Java对象的同步变得极为重要,同步在Java中,可 ...

  8. 为什么 wait/notify/notifyAll 在 Object 类定义而不是 Thread 类?

    作者:Yujiaao 来源:segmentfault.com/a/1190000019962661 一个较难回答的 Java 问题, Java 编程语言又不是你设计的,你如何回答这个问题呢?需要对 J ...

  9. java中所有类的父类Object类介绍

    知识点-- Object类概述 目标: 了解Object的概述和常用方法 路径: Object类的概述 Object类中常用的2个方法 讲解: Object类的概述 java.lang.Object类 ...

最新文章

  1. 专题 13 IPC之信号量
  2. Winpcap进行抓包,分析数据包结构并统计IP流量
  3. boost::geometry::strategy::distance::haversine用法的测试程序
  4. cisco 《连接网络》实验wan综合实验_GNS3实验环境优化与安装
  5. 安卓百度地图附近poi搜索以及到指定poi的换乘方案
  6. 最小可行产品是什么_无论如何,“最小可行产品”到底意味着什么?
  7. css 矩形两边挖半圆
  8. 什么是互联网思维?给你最全面的解释
  9. c语言数字游戏程序,C语言实现数字游戏
  10. 《信号检测与估值理论》Matlab仿真,包括: 高斯-牛顿迭代法对正弦信号参数进行估计
  11. Windows Terminal美化增强指南
  12. PortableApps使用入门
  13. 计算机网络实验报告实验台,计算机控制实验台
  14. HTML5分级标题,最佳HTML5结构,其中标题/标题是文章标签外
  15. php中的refresh,PHP mysqli_refresh() 函数用法及示例
  16. 【学习笔记】C++STL和泛型编程-侯捷
  17. android 开发之蓝牙开发
  18. 使用 NGINX 搭建 RTMP 流媒体服务器实现直播功能
  19. ClickHouse settings final
  20. 了解RabbitMQ

热门文章

  1. java以太坊库web3j的maven插件
  2. pyinstall ImportError: No module named _bootlocale
  3. 【py spider】读取代理ip文件的几个函数 | 代理ip获取 | TXT
  4. 安卓手机反应慢又卡怎么办_OPPO手机越来越卡、反应慢怎么办?解决oppo手机卡顿反应慢的方法...
  5. 深度学习AI美颜系列---SpecialFace特效滤镜
  6. 无法写入最后一个_魔兽世界中颜值最高的十件传奇武器,最后一个至今无法超越...
  7. 安卓真机调试无授权信任窗口
  8. 使用迅雷代替SDK Manager快速下载Android SDK相关
  9. 32.将字符串转换为数字
  10. PS橡皮擦的小圆圈不见了