天天看点

每天一道面试题,明天要休息!synchronized关键字是Java中用于实现线程同步的关键字。它可以修饰方法或代码块,

作者:一个id

每天一道面试题,明天要休息!synchronized关键字是Java中用于实现线程同步的关键字。它可以修饰方法或代码块,用于控制对共享资源的访问,确保多个线程之间的操作按照一定的顺序执行。以下是synchronized关键字的特点和用法:

1. 实现互斥:synchronized关键字可以用来实现互斥访问,即同一时间只允许一个线程执行被synchronized修饰的方法或代码块。当一个线程获取到锁时,其他线程将被阻塞,直到持有锁的线程释放锁。

2. 保证可见性:synchronized关键字不仅提供了互斥访问,还保证了共享变量的可见性。当一个线程释放锁时,会将对共享变量的修改刷新到主内存中,而其他线程读取共享变量时,会从主内存中获取最新值。

3. 作用范围:

- 修饰方法:将整个方法体加上synchronized关键字,表示该方法是一个同步方法,调用该方法时会自动获取对象的锁。

- 修饰代码块:使用synchronized关键字对代码块进行修饰,指定某个对象作为锁,只有获取到该对象的锁才能执行代码块内的代码。

4. 锁的粒度:synchronized关键字可以使用不同粒度的锁,如对象锁和类锁。对象锁是对实例对象加锁,不同实例之间的锁是互不干扰的。类锁是对类的静态成员加锁,同一个类的不同实例共享同一个类锁。

5. 隐式锁与重入性:synchronized关键字使用的是隐式锁,每个对象都有一个关联的锁。同时,synchronized关键字支持重入性,同一个线程可以多次获取同一个锁,避免自己阻塞自己。

#java #程序员 #图文扶持计划入口 #学习打卡

每天一道面试题,明天要休息!synchronized关键字是Java中用于实现线程同步的关键字。它可以修饰方法或代码块,
每天一道面试题,明天要休息!synchronized关键字是Java中用于实现线程同步的关键字。它可以修饰方法或代码块,
每天一道面试题,明天要休息!synchronized关键字是Java中用于实现线程同步的关键字。它可以修饰方法或代码块,

继续阅读