本帖最后由 李晓旭 于 2012-3-16 23:10 编辑
- class Demo
- {
- public demo()
- {
- //构造函数
- }
-
- public synchronized void method()
- {
- //非静态同步函数
- }
- }
- class StaticDemo
- {
- public StaticDemo()
- {
- //构造函数
- }
-
- public static synchronized void method()
- {
- //静态同步法函数
- }
- }
- //非静态函数,是被对象调用
- Demo d = new Demo();
- d.method();
- //因此在函数内部,同步函数就使用的是对象d 作为多线程共有锁
- //所以在函数内,对象就是this
- //静态函数,是通过类直接调用静态方法
- StaticDemo.method();
- //所以函数是使用在内存中的 Demo类 字节码文件对象
- //类名.class
复制代码
首先不是说同步函数使用的锁一定是this!
因为函数分为非静态函数和静态函数两种:
public synchronized void method(){ .......}
public static synchronized void method(){ ...... }
|