---
title: Synchronized同步锁
description: "synchronized关键字提供了Java语言内置的锁定机制，满足Java原子性、可见性，每个对象都有可用于提供互斥访问的关联“监视器”。如果两个线程尝试在同一个对象上“同步”，则其中一个需要等待另一个完成才行。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenggrf/codeprtr/kunpengtaishanporting_12_0080.html
sourcePath: /source/zh/kunpenggrf/codeprtr/kunpengtaishanporting_12_0080.html
indexId: d1554994f22e56e51ac4218ec2c0d1557fa7506ea036017a1ed6d5f5ce78d85765
---
# Synchronized同步锁

synchronized关键字提供了Java语言内置的锁定机制，满足Java原子性、可见性，每个对象都有可用于提供互斥访问的关联“监视器”。如果两个线程尝试在同一个对象上“同步”，则其中一个需要等待另一个完成才行。

- 同步方法
  通过在方法声明中加入synchronized关键字来声明synchronized方法。如下代码表示同一时刻只有一个线程在执行func()，而其他线程都必须等待。

```
public synchronized void func();
```


- 同步代码块
  并发线程访问同一个对象object中的代码块时，同一个时间内只能有一个线程得到执行，另一个线程必须等待当前线程执行完该代码块以后，才能执行该代码块。

```
synchronized(object) { //允许访问控制的代码 }
```
