标签:
synchronized(Object.class)锁住的是Object.class对象,如下,若有某个方法如此加锁,那么该类的所有方法在此方法被某个线程使用时都被锁住。
public String[] split() { synchronized (Path.class) { ... } }
一般锁住Path.class是因为该类中提供了静态方法,为了保证静态方法的多线程共享时互斥,必须使用使用此种加锁方式锁住所有可能被多线程使用的方法。
synchronized(this) 等加锁代码块,加锁方法都是对对象上锁,某个线程调用了任一个上锁的地方,此对象的所有方法都被锁住。
加锁是为了防止多线程同时访问同一个内存块,所以不难理解上述描述。
标签:
原文地址:http://www.cnblogs.com/fordreamxin/p/5002467.html