3.对象锁与静态锁
对象锁
临界区是指程序中的一个代码段,在这段代码中,单独并发的线程对同一个对象进行访问。在Java中,用关键字“synchronized”标识一个临界区。 对象锁是指Java为临界区synchronized(Object)语句指定的对象进行加锁,对象锁是独占排他锁。
如果某个synchronized方法是static的,那么当线程访问该方法时,他的锁并不是synchronized方法所对应的对象,而是synchronized方法所在的对象的Class对象,因为java中无论有多少个对象,这些对象多会对应唯一一个Class对象.因此当线程分别访问同一个类的两个static,synchronized方法时,他们的执行顺序也是顺序的,也就是说一个线程先去执行方法。执行完毕另一个线程才开始执行