通过synchronized静态方法对类加的锁,影响对该类对象的锁吗?
通过synchronized静态方法对类加的锁,影响对该类对象的锁吗?通过synchronized静态方法对类加的锁,影响对该类对象的锁吗?比如通过synchronized写在一个类的静态方法前,可以在类的范围内防止对static数据的并发访问,但假如这个类里的某些非静态方法也用了synchronized,这些是对这个类的对象加锁的。 这两个所有冲突吗? 对类加过锁的话,一个方法只拥有这个类的一个对象的锁,它能访问这个对象吗?
类就一个。 静态的不会出2个。 同步不2同步没啥关系。 这样理解对不对。 你都试过了。 哆啦A梦试的代码。 class DualSynch { private Object syncObject = new Object(); public synchronized void f() { intln("Inside f()"); // Doesn't release lock: try { eep(500); } catch(InterruptedException e) { throw new RuntimeException(e); } intln("Leaving f()"); } public void g() { synchronized(syncObject) { intln("Inside g()"); try { eep(500); } catch(InterruptedException e) { throw new RuntimeException(e); } intln("Leaving g()"); } } public synchronized static void lwy1() { intln("Inside lwy1()"); // Doesn't release lock: try { eep(1000); } catch(InterruptedException e) { throw new RuntimeException(e); } intln("Leaving lwy1()"); } public synchronized static void lwy2() { intln("Inside lwy2()"); // Doesn't release lock: try { eep(1000); } catch(InterruptedException e) { throw new RuntimeException(e); } intln("Leaving lwy2()"); } } public class SyncObject { //private static Test monitor = new Test(); public static void main(String[] args) throws InterruptedException { final DualSynch ds = new DualSynch(); new Thread() { public void run() { ds。
f(); DualSynch。lwy1(); } }。start(); ds。g(); synchronized(ds) { ds。wait(10); } DualSynch。lwy2(); } } ///:~ 看来是要搞培训啊。
答:一般分两个阶段 阶段一:先载入类 阶段二:然后才能依据类来实例化对象 而static的方法、变量都是属于类的,非static的则属于对象 如果在阶段一,访问非s...详情>>
答:google "java 缓冲池"详情>>
答:百度里搜张孝祥 非常好的视频教程详情>>