1. 如果某个 synchronized 方法是 static 的,那么当线程访问该方法时,它锁的并不是synchronized 方法所在的对象, 而是 synchronized 方法所在的对象所对应的 Class 对象,因为 Java 中无论一个类有多少个对象 ,这些对象会对应唯一一个 Class 对象,因此当线程分别访问同一个类的两个对象的两个 static , synchronized 方法时,他们的执行顺序也是顺序的,也就是说一个线程先去执行方法,执行完毕后另一个线程才开始执行。

2. synchronized 块,写法:

synchronized(object)

{

}

表示线程在执行的时候会对 object 对象上锁。

3. synchronized 方 法 是 一 种 粗 粒 度 的 并 发 控 制 , 某 一 时 刻 , 只 能 有 一 个 线 程 执 行 该synchronized 方法 ;synchronized 块则是一种细粒度的并发控制,只会将块中的代码同步,位于方法内、 synchronized 块之外的代码是可以被多个线程同时访问到的。

4. 死锁( deadlock )

5. wait 与 notify 方法都是定义在 Object 类中,而且是 final 的,因此会被所有的 Java类所继承并且无法重写。这两个方法要求在调用时线程应该已经获得了对象的锁,因此对这两个方法的调用需要放在 synchronized 方法或块当中。 当线程执行了 wait方法时,它会释放掉对象的锁 。

6. 另一个会导致线程暂停的方法就是 Thread 类的 sleep 方法,它会导致线程睡眠指定的毫秒数, 但线程在睡眠的过程中是不会释放掉对象的锁的 。

圣思园——Java SE Lesson 16相关推荐

  1. 圣思园——JAVA SE Lesson 1

    1. 类是一种 抽象 的概念,对象是类的一种具体表示形式,是 具体 的概念.先有类,然后由类来生成对象( Object).对象又叫做实例( Instance ). 2. 类由两大部分构成:属性以及方法 ...

  2. 圣思园——Java SE Lesson 2

    1. 多态:父类型的引用可以指向子类型的对象. 2. Parent p = new Child(); 当使用多态方式调用方法时,首先检查父类中是否有sing() 方法, 如果没有则编译错误:如果有,再 ...

  3. 圣思园——Java SE Lesson 6

    1. 当向ArrayList添加一个对象时,实际上就是将该对象放置到了 ArrayList 底层所维护的数组当中:当向 LinkedList 中添加一个对象时,实际上 LinkedList 内部会生成 ...

  4. 圣思园——Java SE Lesson 4

    1. 包装类(Wrapper Class).针对于原生数据类型的包装.所有的包装类(8 个)都位于 java.lang 包下.Java 中的 8个包装类分别是:Byte, Short, Integer ...

  5. 圣思园——Java SE Lesson 5

    1. 对于Java中的常量的命名规则:所有单词的字母都是大写,如果有多个单词,那么使用下划线连接即可.比如说:public static final int AGE_0F_PERSON = 20; 2 ...

  6. 圣思园——Java SE Lesson 11

    1. 所谓自定义异常, 通常 就是定义了一个继承自 Exception 类的子类,那么这个类就是 一个自定义异常类.通常情况下,我们都会直接继承自 Exception 类, 一般 不会继承 某个运行时 ...

  7. 圣思园-----Java SE Lesson 7

    1. 有这样一个类: // getter and setter 要求:假如有若干个类 Person 对象存在一个 List 当中,对他们进行排序,分别按照名字.年龄. id 进行排序(要有正序与倒序两 ...

  8. 北京圣思园_Java SE Lesson 11

    Java SE Lesson 11 1.  所谓自定义异常,通常就是定义了一个继承自Exception类的子类,那么这个类就是一个自定义异常类.通常情况下,我们都会直接继承自Exception类,一般 ...

  9. 圣思园java se培训总结(82-)(观察者设计模式)

    世界上没有无缘无故的爱,也没有无缘无故的恨,代码也是一样.为什么点击一个按钮就会出现一个变化!这就是观察者设计模式. 观察者设计模式定义了一种一对多的关系,多个观察者对象监听一个主题对象,当主题对象发 ...

最新文章

  1. linux boost filesystem程序链接,在Linux中链接Boost库
  2. CheckBox UITableViewCell
  3. Era 贪心 Codeforces Round #752 (Div. 2)
  4. 天涯煮酒又发现一篇好文,王阳明传,序就很漂亮,转一下
  5. MySQL数据库的权限表
  6. 选择让孩子练习羽毛球的家长好好看看!
  7. Oracle 循环相关
  8. 【转】几种数据库的大数据批量插入
  9. PostgreSQL最终获得存储过程
  10. 路由删除命令_清除思科路由器配置信息的两种方法
  11. Linux Apache Mysql PHP典范设置装备安排-2
  12. springboot毕业设计管理系统(带论文)
  13. 如何使用origin画韦恩图?
  14. 数据可视化看板怎么搭建,这样做小白能看懂
  15. 基于51单片机GSM模块的家庭防火防盗报警系统
  16. mysql的group by语句不会产生_MySQL:为什么查询列表中多了它,GROUP BY语句就会报错呢?...
  17. python中and的用法
  18. html点击a标签弹层播放视频,html中点击a标签视频在新页面播放
  19. java路径是什么_什么是java路径?
  20. 使用Python网络爬虫抓取牛客网题目

热门文章

  1. 10张程序员喜爱的壁纸,需要自取~
  2. L1正则化优化问题的一种求解方法
  3. shell 批量 ping 多个IP地址
  4. 手机端微信传动文件,超出文件限制,怎么办?
  5. eval——未结束的字符串常量
  6. Debugging Tools for Windows (WinDbg)的使用
  7. 网络爬虫工作原理分析
  8. 王学岗——————H265实现低延时投屏,从零实现高清无损投屏(对应第六节课)
  9. 尚硅谷Java零基础极速入门七天版笔记
  10. 使用 patch 命令打补丁