对象和对象锁

来源:互联网 发布:阿里云服务器流量计费 编辑:程序博客网 时间:2024/04/28 10:58


3.对象锁与静态锁

对象锁

  临界区是指程序中的一个代码段,在这段代码中,单独并发的线程对同一个对象进行访问。在Java中,用关键字“synchronized”标识一个临界区。   对象锁是指Java为临界区synchronized(Object)语句指定的对象进行加锁,对象锁是独占排他锁。


java 中的每一个对象都有一个锁或者叫做监视器,当访问某个对象的synchronized方法时,表示将该对象上锁,此时其他的任何线程都无法访问synchronized的方法了,直到之前那个线程执行完毕之后(或者是抛出了异常)那么该对象的锁才会被释放掉,其他的线程才可以再去访问synchronizedfangfa
如果某个synchronized方法是static的,那么当线程访问该方法时,他的锁并不是synchronized方法所对应的对象,而是synchronized方法所在的对象的Class对象,因为java中无论有多少个对象,这些对象多会对应唯一一个Class对象.因此当线程分别访问同一个类的两个static,synchronized方法时,他们的执行顺序也是顺序的,也就是说一个线程先去执行方法。执行完毕另一个线程才开始执行
原创粉丝点击