JAVA多线程同步问题

synchronized(obj)中的OBJ到底是什么东西啊?为什么随便一个东西都可以当做锁呢?我明白同步的问题,可我问的OBJ到底是什么啊。。。我想知道的是OBJ加锁的... synchronized(obj) 中的OBJ到底是什么东西啊?为什么随便一个东西都可以当做锁呢?
我明白同步的问题,可我问的OBJ到底是什么啊。。。我想知道的是OBJ加锁的原理哦~ 我知道是个对象,可是我想问的是为什么是个对象,这个对象又是怎么完成锁定的!!!我想知道的是原理,原理!拜托啦。。。各位啊。。。 一楼的同志,你帮我翻译过来我就给你200分。。。 一定要自己翻译哈,嘎嘎
展开
 我来答
_宽容的心_
2009-06-01 · TA获得超过480个赞
知道答主
回答量:194
采纳率:0%
帮助的人:160万
展开全部
噢,是这样的,不是什么东西都能当做锁,你不能这样理解。
synchronized(obj),obj这里是你所在类的MIDlet的一个实例对象。

目的是解决因线程不同步而对数据造成破坏的问题。
假如:在一个类中有一个成员变量a,还有两个线程,如果线程不同步的话,这两个线程有可能同时访问同一个变量a,这样的话,就会出现问题,最后执的结果a到底是几呢,所以就要使用线程同步这个办法了。

使用线程同步后,线程1在访问a的时候,我加了一把锁,在这个时候别的线程是不允许访问a的,等线程1对a有访问结束后,就会去掉这把锁,其他的线程再访问a的时候,又会加锁,这样在同一时候,只能有一方访问a,这样就不会出现问题,我说这么多,你明白了吗?希望你能明白,不然我说的算白说了,呵呵!!!!
百度网友feaac8c7c
2009-06-01 · TA获得超过998个赞
知道小有建树答主
回答量:168
采纳率:0%
帮助的人:164万
展开全部
多线程的同步有两种方法,
一种是同步代码块,语句如下:
synchronized(obj){
//关键代码
}
另一种是同步方法:
public synchronized return_type method_name(argiments_lists){
//关键代码
}

你问的obj就是第一种同步方法,它是当前线程的引用,一般会用this关键字来指代,但有时也会用一个虚拟的变量来代替。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
onezero104
2009-06-02 · TA获得超过281个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:93.2万
展开全部
简单说就是个对象。你也可以用this关键字。
试试看。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2b3a08d
2009-06-01 · TA获得超过561个赞
知道答主
回答量:139
采纳率:0%
帮助的人:0
展开全部
楼上说的是,解决的是线程对变量的互斥访问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
楚欣陈
2012-06-15
知道答主
回答量:3
采纳率:0%
帮助的人:4706
展开全部
每一个对象都有一个监视器,就是我们通常说的锁,所以只要是对象都可以当锁,这里的obj既可以是OBject的对象,也可以是String的对象。一个对象对应一把锁,一把锁互斥地被线程拥有,synchronized(obj) 是同步块方式的实现,用来将一段程序块加锁,当一个线程访问该程序块时,会先判断obj这个监视器是否加锁,如果没有被加锁,就将obj监视器加锁。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式