栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java同步方法锁定对象还是方法?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java同步方法锁定对象还是方法?

如果将方法声明为已同步(就像你通过键入进行的操作一样

public synchronized void addA()
),则会在整个对象上进行同步,因此,从同一对象访问不同变量的两个线程仍然会相互阻塞。

如果你一次只想同步一个变量,那么两个线程在访问不同的变量时不会互相阻塞,你可以分别在

synchronized ()
块中同步它们。如果a和b是对象引用,则可以使用:

public void addA() {    synchronized( a ) {        a++;    }}public void addB() {    synchronized( b ) {        b++;    }}

但是由于它们是原始类型,所以你不能这样做。

我建议你改用AtomicInteger:

import java.util.concurrent.atomic.AtomicInteger;class X {    AtomicInteger a;    AtomicInteger b;    public void addA(){        a.incrementAndGet();    }    public void addB(){         b.incrementAndGet();    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441865.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号