- N +

同步方法和同步代码块有什么区别

同步方法和同步代码块都是Java中用于实现线程同步的机制,它们的主要区别在于使用方式和适用场景:

1. 同步方法:

定义:同步方法是指被`synchronized`关键字修饰的方法。当一个线程访问同步方法时,它会自动获得该方法所属对象的监视器锁。

使用:只需在方法声明前加上`synchronized`关键字即可。

锁对象:默认情况下,同步方法是针对当前对象实例进行同步的,即`this`关键字所指向的对象。

适用场景:适用于方法内部锁的粒度较小,且方法内部逻辑简单的情况。

2. 同步代码块:

定义:同步代码块是指被`synchronized`关键字修饰的代码块。当一个线程访问同步代码块时,它会自动获得指定对象的监视器锁。

使用:需要在代码块前加上`synchronized`关键字,并指定一个锁对象。

锁对象:可以指定任意对象作为锁,也可以使用`this`或`Class`对象。

适用场景:适用于需要同步的代码块较大,或者需要针对不同对象进行同步的情况。

以下是同步方法和同步代码块的一个简单示例:

```java

public class SyncExample {

// 同步方法

public synchronized void syncMethod() {

// 同步代码块内的代码

返回列表
上一篇:
下一篇: