zoukankan      html  css  js  c++  java
  • java关键字之synchronized

    1.synchronized可以用了修饰一个普通方法,或者代码块,这个时候synchronized锁定的是当前对象,只要有一个线程在访问对应的方法或代码块,其他线程必须等待。
    2.synchronized只对修饰的方法有效,锁定对象的其他非synchronized方法还是可以访问的
    3.synchronized也可以用来锁定指定对象,当一个线程访问指定对象时,其他试图访问指定对象的线程将会阻塞,直到该线程访问指定对象结束
    4.synchronized可以用了修饰一个静态方法,静态方法是属于类的而不属于对象的。同样的,synchronized修饰的静态方法锁定的是这个类的所有对象
    5.synchronized(*.class)效果跟锁定静态方法相同,都是锁定这个类的所有对象。
    
    

    总结

    A. 无论synchronized关键字加在方法上还是对象上,如果它作用的对象是非静态的,则它取得的锁是对象;如果synchronized作用对象是静态方法或一个类,则它取得的锁是对类,该类所有的对象同一把锁。 
    B. 每个对象只有一个锁(lock)与之相关联,谁拿到这个锁谁就可以运行它所控制的那段代码。 
    C. 实现同步是要很大的系统开销作为代价的,甚至可能造成死锁,所以尽量避免无谓的同步控制。

    修饰内容锁类型示例
    修饰代码块 任意对象锁 示例四
    修饰普通方法 this锁 示例五
    修饰静态方法 类锁 示例六
  • 相关阅读:
    ExtJS+DWR+Spring+Hibernate开发HRMS(5)
    ExtJS实战(9)疑难杂症分析
    ExtJS实战(8)CRUD+分页+复杂查询+排序
    ExtJS实战(7)登陆
    ExtJS+DWR+Spring+Hibernate开发HRMS(1)
    ExtJS+DWR+Spring+Hibernate开发HRMS(3)
    ExtJS实战(10)项目总结
    ExtJS+DWR+Spring+Hibernate开发HRMS(2)
    Hibernate QBC高级查询
    ExtJS+DWR+Spring+Hibernate开发HRMS(4)
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/9293739.html
Copyright © 2011-2022 走看看