Java中synchronized关键字如何有效避免线程安全问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2329个文字,预计阅读时间需要10分钟。
首先回顾一下synchronized的基本使用:使用synchronized代码块,被修饰的代码段成为同步语句块,其作用是限制同一时刻只能有一个线程访问该代码块。其他用synchronized修饰的范围包括:
1. 同步方法:synchronized修饰的方法称为同步方法,其锁是当前对象实例。
2.同步类:synchronized修饰的静态方法,其锁是当前类的Class对象。
在使用synchronized关键字时,应注意缩小代码块的范围,以减少线程等待时间。
首先来回顾一下synchronized的基本使用:
- synchronized代码块,被修饰的代码成为同步语句块,其作用的范围是调用这个代码块的对象,我们在用synchronized关键字的时候,能缩小代码段的范围就尽量缩小,能在代码段上加同步就不要再整个方法上加同步。这叫减小锁的粒度,使代码更大程度的并发。
- synchronized方法,被修饰的方法成为同步方法,其作用范围是整个方法,作用对象是调用这个方法的对象。
- synchronized静态方法,修饰一个static静态方法,其作用范围是整个静态方法,作用对象是这个类的所有对象。
- synchronized类,其作用范围是Synchronized后面括号括起来的部分synchronized(className.class),作用的对象是这个类的所有对象。
本文共计2329个文字,预计阅读时间需要10分钟。
首先回顾一下synchronized的基本使用:使用synchronized代码块,被修饰的代码段成为同步语句块,其作用是限制同一时刻只能有一个线程访问该代码块。其他用synchronized修饰的范围包括:
1. 同步方法:synchronized修饰的方法称为同步方法,其锁是当前对象实例。
2.同步类:synchronized修饰的静态方法,其锁是当前类的Class对象。
在使用synchronized关键字时,应注意缩小代码块的范围,以减少线程等待时间。
首先来回顾一下synchronized的基本使用:
- synchronized代码块,被修饰的代码成为同步语句块,其作用的范围是调用这个代码块的对象,我们在用synchronized关键字的时候,能缩小代码段的范围就尽量缩小,能在代码段上加同步就不要再整个方法上加同步。这叫减小锁的粒度,使代码更大程度的并发。
- synchronized方法,被修饰的方法成为同步方法,其作用范围是整个方法,作用对象是调用这个方法的对象。
- synchronized静态方法,修饰一个static静态方法,其作用范围是整个静态方法,作用对象是这个类的所有对象。
- synchronized类,其作用范围是Synchronized后面括号括起来的部分synchronized(className.class),作用的对象是这个类的所有对象。

