静态同步synchronized方法与synchronized(class)代码块
时间: 2023-12-07 10:47:24 浏览: 41
静态同步synchronized方法和synchronized(class)代码块都是用于实现线程同步的机制。它们可以确保在多个线程同时访问共享资源时,只有一个线程可以执行相关的代码块,从而避免竞态条件和数据不一致的问题。
静态同步synchronized方法是指在静态方法上使用synchronized关键字进行修饰,示例如下:
```java
public class MyClass {
public static synchronized void staticSyncMethod() {
// 需要同步的代码逻辑
}
}
```
在上述示例中,当不同线程调用`staticSyncMethod`方法时,只有一个线程可以进入该方法执行。其他线程需要等待该线程执行完毕后才能继续执行。
synchronized(class)代码块是指使用synchronized关键字对类的对象或类字面量进行修饰,示例如下:
```java
public class MyClass {
public void syncMethod() {
synchronized (MyClass.class) {
// 需要同步的代码逻辑
}
}
}
```
在上述示例中,当不同线程调用`syncMethod`方法时,只有一个线程可以进入`synchronized (MyClass.class)`代码块执行。其他线程需要等待该线程执行完毕后才能继续执行。
需要注意的是,静态同步synchronized方法锁定的是当前类的Class对象,而synchronized(class)代码块锁定的是括号中的对象或类字面量。两者的区别在于锁定对象的粒度不同,根据具体场景选择适合的方式来实现线程同步。
相关推荐
![mp4](https://img-home.csdnimg.cn/images/20210720083504.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)