关于JAVA中的synchronized锁定对象 5

被synchronized锁住的对象是不是能即在访问synchronized方法的同时也能访问其他未锁住的方法,也就是说synchronized把对象锁住,其他对象暂时无... 被synchronized锁住的对象是不是能即在访问synchronized方法的同时也能访问其他未锁住的方法,也就是说synchronized把对象锁住,其他对象暂时无法访问这个synchrinized方法,但是这个被锁住的对象只是无法访问其他synchronized方法而已,若是普通的方法的话,应该也能与当前的synchronized方法进行同时访问吧。
我以上的见解哪里有问题 我是新手 麻烦大家指正
展开
 我来答
xhaisheng
2012-07-11 · 超过29用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:69.9万
展开全部
synchronized的锁是针对多线程的,从线程的角度去思考才能真正弄明白。

Java的synchronized使用方法总结
1. 把synchronized当作函数修饰符时
这也就是同步方法,那这时synchronized锁定的是哪个对象呢?它锁定的是调用这个同步方法对象。也就是说,当一个对象P1在不同的线程中执行这个同步方法时,它们之间会形成互斥,达到同步的效果。但是这个对象所属的Class所产生的另一对象P2却可以任意调用这个被加了synchronized关键字的方法。
同步块,示例代码如下:
public void method3(SomeObject so)
{
synchronized(so)
{
//…..
}
}
这时,锁就是so这个对象,谁拿到这个锁谁就可以运行它所控制的那段代码。当有一个明确的对象作为锁时,就可以这样写程序,但当没有明确的对象作为锁,只是想让一段代码同步时,可以创建一个特殊的instance变量(它得是一个对象)来充当锁。
3.将synchronized作用于static 函数,示例代码如下:
Class Foo
{
public synchronized static void methodAAA() // 同步的static 函数
{
//….
}
public void methodBBB()
{
synchronized(Foo.class) // class literal(类名称字面常量)
}
}
代码中的methodBBB()方法是把class literal作为锁的情况,它和同步的static函数产生的效果是一样的,取得的锁很特别,是当前调用这个方法的对象所属的类(Class,而不再是由这个Class产生的某个具体对象了)。
枷星足球w
2012-07-12
知道答主
回答量:80
采纳率:0%
帮助的人:17.1万
展开全部
学JAVA就到广州疯狂JAVA教育中心来学习。包就业 先就业后付款。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huntagain2008
2012-07-11 · TA获得超过927个赞
知道小有建树答主
回答量:999
采纳率:0%
帮助的人:399万
展开全部
mark!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式