java synchronized 有两种用法?一种是方法上加synchronized ,还有一种是什么?

 我来答
祖梅稽倩
2020-01-02 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:27%
帮助的人:1398万
展开全部
第一种用法就是你上面展示的方法,另一种方法是
synchronized(obj){//obj代表同步的时候要锁住独占的对象
//...要同步的部分代码
}
synchronized
void
getName(){
//......代码
}
等价于
void
getName(){
synchronized(this){
//......代码
}
}
所以后一种方法使用范围更广
同步就是如果一个线程使用一个对象的时候不允许另一个线程来用,就要把那个对象锁起来
通俗点讲,一个人用电话亭时把电话亭锁起来,其他人只能排队使用电话亭,这就是同步,不同步的话就会出现每个人冲上去抢电话亭用的状况
同步使用有两个关键的条件:一个是多线程,另一个是出现多线程共同调用一个对象的状况
承松兰濯缎
2020-01-11 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:28%
帮助的人:1047万
展开全部
synchronized
语句块,可以方便的写在方法内的某段。用法:synchronized
(对象地址){
逻辑
}
synchronized
的意思就是
先获得对象地址的锁,那么就可以先执行那部分代码。执行完就放开锁其他线程就可以进来了。
synchronized
void
getName()这个代码表示
以this类实例为对象地址相当于synchronized
(this){}.
那么在多线程环境中。如果访问同一个类同一个实例的这个方法,就会被同步
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
位同书戴秋
2020-01-07 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:27%
帮助的人:1219万
展开全部
synchronized
可以修饰方法
也可以修饰语句块
加了synchronized
以后
一个线程在调用该方法时其他线程是不能调用的
就相当于我进了一个房间把门插上了
其他人必须等我出来了才能进去
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式