当前位置:  技术问答>java相关

请教synchronized问题!!

    来源: 互联网  发布时间:2015-04-10

    本文导语:  在jb的帮助的文档,我有一点不明白 A synchronized method acquires a lock (§17.1) before it executes. For a class (static) method(静态的方法??为什么是静态方法?), the lock associated with the Class object(类对象?) (§20...

在jb的帮助的文档,我有一点不明白
A synchronized method acquires a lock (§17.1) before it executes. For a class (static) method(静态的方法??为什么是静态方法?), the lock associated with the Class object(类对象?) (§20.3) for the method's class is used(). For an instance method, the lock associated with this (the object for which the method was invoked) is used. These are the same locks that can be used by the synchronized statement; thus, the code: 
class Test {
  int count;
  synchronized void bump() { count++; }//为什么同步呀??
  static int classCount;
  static synchronized void classBump() {//为用同步
    classCount++;
  }
}
 has exactly the same effect as: 
class BumpTest {
  int count;
  void bump() {
   synchronized (this) {
     count++;
   }
 }
  static int classCount;
  static void classBump() {
   try {
      synchronized (Class.forName("BumpTest")) {
        classCount++;
     }
   } catch (ClassNotFoundException e) {
       ...
   }
  }
}

|
同步就仿佛大号时,自然希望一个人一个坑,免得相互干扰。

|
用在多线程中。比如:MyThread类继承于Thread,我们要用for(;;)循环来创建MyThread类100次。在MyThread类有个线程计数器(int),创建MyThread时加1,退出时减1,这个计数器不可能同时又加又减,synchronized就是用来实现这个功能的。
如上例,当运行到 synchronized  (Class.forName("BumpTest"))  {
                  classCount++;
            }时其它线程不能对classCount进行操作,只有程序运行完synchronized...{...}后其它线程才能操作classCount,同时只能有一个线程操作classCount。 

|
csdn_cloud(拔光毛的兔兔) 说得很经典

|
For a class(static) method, we don't need to create instance for the class, so the lock associated with the Class objectfor  the  method's class is used. It work like "synchronized(Class.forName("BumpTest"))".

|
jb中的例子大多是没有背景的。
在分布式客服多用户时,假如多人同时访问服务器上的同一个文件,当然就应该用同步。

    
 
 

您可能感兴趣的文章:

  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • 请教,请教,这个问题是为什么????
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 请教一个函数入口处的汇编问题(压栈问题)
  • 请教!出现这个提示是什么原因..是模块版本问题,还是其他问题..http://220.114.102.28/xitong/ProductShow.asp?ArticleID=82
  • 请教两个小问题:一个cgywin下使用vi的问题,另一个socket的问题
  • 请教一个opengl的问题
  • 请教两个redhat9问题
  • 请教kdevelop的问题
  • 送上100分问题请教,同时学习一下进程通讯问题,望各位不吝赐教
  • 请教linux 下的adsl拨号问题.
  • 请教unix常用命令命令问题
  • 请教,帖子回复的显示问题
  • 请教关于sendto问题
  • 请教linux共享上网的问题!!!在线等,问题解决马上结贴
  • 有在用AXIS的朋友吗?请教一个问题
  • 高分请教,n简单的问题急急!!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教这种循环的执行过程
  • 请教如何在指定目录下查找包含指定文字的文件
  • 请教局域网中如何通过ip地址得到主机名
  • 请教,如何用虚拟订机安装liux
  • 【请教】LINUX 下SNMP的MIB开发
  • 请教两个shell
  • 请教高手:如何用gnome/gtk编写托盘程序
  • 菜鸟请教Linux
  • 请教semop()函数的用法、含义
  • 请教个,关于C编译器参数CFLAGS的问题(真诚请教,分不够了全部送出)
  • 请问如何在Redhat7.1下安装Ftp服务,如何开启Ftp帐号????请教!!!急急急急急急
  • Think in java 问题。(请教)
  • 请教下我的eth0为什么设置后重启会失败?
  • 请教:$PWD 这个东西是什么意思啊?谢谢!
  • 请教高手AIX中怎么删除行尾的字符^M


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3