前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >synchronized 关键字的用法?

synchronized 关键字的用法?

作者头像
水货程序员
修改2018-11-16 10:23:44
6640
修改2018-11-16 10:23:44
举报
文章被收录于专栏:javathingsjavathings

如果面试问到这个题目,那么就可以窃喜了,因为太简单了,只要写过多线程代码的人,肯定用到过 synchronized 关键字。我把答案总结在这里,背诵一下就可以了。

synchronized 关键字表示了 Java 的一个实现同步的锁,线程进入同步代码块,必须要先获得锁,退出时释放锁。这个锁是互斥的,同一时间只有一个线程能获得锁。获得不到锁的线程,只能等待别的线程释放锁,然后再去抢这个锁。

修饰代码块

这是最常用的方式,获得 lock 对象的线程,才能继续运行。

代码语言:javascript
复制
Object lock = new Object();
public void foo() {
 synchronized (lock) {
 //do things
 }
}

修饰方法

代码语言:javascript
复制
public synchronized void foo()
{
 // do things
}

这个等价于下面的代码,获取的锁对象就是当前类的实例。

代码语言:javascript
复制
public void foo()
{
 synchronized(this) {
 // do things
 }
}

修饰静态的方法

代码语言:javascript
复制
public synchronized static void foo() {
 // do things
}

这个等价于下面的代码,获取的锁对象就是当前类的 class 对象。

代码语言:javascript
复制
class myclass {
 public void foo() {
   synchronized(myclass.class) {
   // do things
   }
 }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档