码迷,mamicode.com
首页 > 其他好文 > 详细

对象锁

时间:2014-08-19 12:27:04      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:java   使用   代码   new   ad   on   sp   c   

在JVM中,每个对象和类在逻辑上都是和一个监视器相关联的。对于对象来说。相关联的监视器保护对象的实例变量。为了实现监视器的排他能力 ,JVM为每个对象都关联一个锁。这个锁表示只允许一个线程拥有的特权,如使用synchronized 方法或者synchronized代码块时,它便进入然后锁起来,别的线程试图运行时,只能等待其释放掉锁。 

Jdk 1.5只会 ,Java还提供了一种显式加锁的机制,即使用java.util.concurrent.locks.Lock 接口提供的lock()方法来获取锁,用unlock()方法释放锁,在实现线程安全的控制中,通常会使用可重入锁ReentrantLock实现类来完成这个功能。

示例:

 private Lock lock =new ReentrantLock();//创建lock实例
 public  boolean sell(){
  boolean flag=true;
  lock.lock();            //获取锁
  if(tickets<1000){
   tickets=tickets +1;  //更改票数
   System.out.println(Thread.currentThread().getName()+ ": 卖出第" +tickets +"张票");
  }else{
   flag=false;
  }
  lock.unlock();  //释放锁

对象锁,布布扣,bubuko.com

对象锁

标签:java   使用   代码   new   ad   on   sp   c   

原文地址:http://www.cnblogs.com/starxingyun/p/3921590.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!