昆昆欧粑粑 2019-02-20 15:09:59 1148 收藏 1
分类专栏: java学习 文章标签: synchronized 全局锁 对象锁 同步
版权
都可以锁!
synchronized(this)以及非static的synchronized方法,锁住的是括号里()的对象,如果要锁全局,就用synchronized(对象.class)。

static 的synchronized方法,static方法可以直接类名.方法名()调用,无法使用this,所以它锁的不是this,而是类的Class对象。所以静态方法也相当于全局锁,锁住了代码段。

具体看下面的代码

对象锁和全局锁区别:
对象锁:锁的是这个对象。

全局锁:锁的是那个写了synchronized关键字的方法或者代码块。

举个例子:假设A类创建了a、b、c三个对象,然后a使用对象锁住test()方法,b和c依然可以访问test()方法,对象锁只能防止别的线程调用a对象的test方法。而如果a使用全局锁,锁住的是真正的代码块,b和c就不能使用test方法。

synchronized定义对象锁:

1、在方法内部加synchronized关键字定义:

public String sellTicket2(){
// 在方法内部加synchronized代码块
synchronized (this){ // 表示锁住对象
// 要锁住的代码
}
return "";
}
2、在方法头用synchronized关键字修饰:

public synchronized String sellTicket3(){
// 要锁的代码
return "";
}
synchronized定义全局锁:

// 真正锁住代码
public String sellTicket4(){
synchronized (Main.class){
// 要锁的代码
}
return "";
}
 
————————————————
版权声明:本文为CSDN博主「昆昆欧粑粑」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/likunkun__/article/details/87792384

最新文章

  1. AutoMapper(七)
  2. Java学习-序列化
  3. python拆分CANLog
  4. Linux 中 Oracle dmp 文件导入导出
  5. 关于Linux与windows传递文件乱码问题
  6. c++中的&
  7. 网易新闻iOS版使用的18个开源组件
  8. php圖片中寫入字符串然後生成圖片下載到本地
  9. ajax请求,请求头是provisional are shown。请求未发送出去
  10. Java笔记(十)……面向对象II封装(Encapsulation)
  11. PAIP.提升效率----论项目知识库的建设。。
  12. flappy bird游戏源代码揭秘和下载
  13. 腾讯云数据库团队:MySQL数据库的高可用性分析
  14. 8.Smarty的条件判断语句的写法
  15. mysql多实例-主从复制安装
  16. 005-Python字典
  17. fastAdmin进阶
  18. HDFS之FileStatus
  19. 使用vue的一些经验
  20. Apache的MaxClients设置

热门文章

  1. #刷题记录--剑指 Offer 07. 重建二叉树
  2. Linux Docker虚拟机入门实战讲解
  3. C# 逆变(Contravariance)/协变(Covariance) - 个人的理解
  4. VUE3 之 使用标签实现动画与过渡效果(下) - 这个系列的教程通俗易懂,适合新手
  5. Qt:QCustomPlot使用教程(三)——用户交互
  6. 【实测】Python 和 C++ 下字符串查找的速度对比
  7. 为什么 Vue3.js / Element+ 组件属性前面有的需要添加冒号,有的不需要?
  8. JAVA——类与对象
  9. LeetCode-056-合并区间
  10. c# 反射实现模型深拷贝