当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

Java同步机制:sychronized对代码影响[Java编程]

赞助商链接



  本文“Java同步机制:sychronized对代码影响[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

Java对多线程的支持与同步机制深受大家的爱好,仿佛看起来利用了synchronized关键字便可以轻松地办理多线程同享数据同步问题.到底若何?――还得对synchronized关键字的作用举行深化理解才可定论.

总的说来,synchronized关键字可以作为函数的修饰符,也可作为函数内的语句,也就是平常说的同步办法和同步语句块.假如再细的分类,synchronized可作用于instance变量、object reference(对象引用)、static函数和class literals(类名称字面常量)身上.

在进一步阐述之前,我们需求明确几点:

A.无论synchronized关键字加在办法上还是对象上,它获得的锁都是对象,而不是把一段代码或函数当作锁――并且同步办法极大概还会被其他线程的对象拜候.

B.每个对象只有一个锁(lock)与之相关联.

C.实现同步是要很大的系统开销作为代价的,乃至大概造成死锁,所以尽大概避免无谓的同步掌握.

接着来谈论synchronized用到差别地方对代码产生的影响:

假定P1、P2是同一个类的差别对象,这个类中定义了以下几种情形的同步块或同步办法,P1、P2就都可以调用它们.

1.把synchronized当作函数修饰符时,示例代码以下:

Public synchronized void methodAAA()
{
//….
}

这也就是同步办法,那这时synchronized锁定的是哪个对象呢?它锁定的是调用这个同步办法对象.也就是说,当一个对象P1在差别的线程中履行这个同步办法时,它们之间会形成互斥,到达同步的效果.但是这个对象所属的Class所产生的另一对象P2却可以肆意调用这个被加了synchronized关键字的办法.

上边的示例代码平等于以下代码:

public void methodAAA()
{
synchronized (this)   // (1)
{
    //…..
}
}

(1)处的this指的是什么呢?它指的就是调用这个办法的对象,如P1.可见同步办法实质是将synchronized作用于object reference.――那个拿到了P1对象锁的线程,才可以调用P1的同步办法,而对P2而言,P1这个锁与它毫不相关,程序也大概在这种情形下摆脱同步机制的掌握,造成数据混乱

2.同步块,示例代码以下:

public void method3(SomeObject so)
{
synchronized(so)
{
   //…..
}
}


  以上是“Java同步机制:sychronized对代码影响[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .