Synchronized用法

synchronized是Java中的关键字,是一种同步锁。

@synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改,保证代码的安全性。

也就是包装这段代码是原子性的,安全的。(是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行)它修饰的对象有以下几种: 

  1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象; 
  2. 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象; 

       3.修饰一个静态方法。

     4.修饰类

修饰方法的注意事项
接口方法时不能使用synchronized关键字;
构造方法不能使用synchronized关键字,但可以使用synchronized代码块进行同步;
synchronized关键字无法继承;
如果在父类中的某个方法使用了synchronized关键字,而在子类中覆盖了这个方法,在子类中的这个方法默认情况下并不是同步的。
子类方法同步的解决方案
  1.子类方法也加上synchronized 关键字
  2.子类方法中调用父类同步的方法,例如:使用 super.xxxMethod()调用父类方法
  3. 修改一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象; 
  4. 修改一个类,其作用的范围是synchronized后面括号括起来的部分,作用主的对象是这个类的所有对象。

修饰一个代码块

  一个线程访问一个对象中的synchronized(this)同步代码块时,其他试图访问该对象的线程将被阻塞。(只有当当前线程访问完该代码块之后另一个才可以访问)

 

当两个并发线程(thread1和thread2)访问同一个对象(syncThread)中的synchronized代码时,在同一时刻只能有一个线程得到执行,另一个线程受阻塞,必须等待当前线程执行完这个代码块以后才能执行该代码块。

 

posted @   苏苏丫  阅读(68)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示