乐观悲观有内涵概念和外延概念两类_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 乐观悲观有内涵概念和外延概念两类

乐观悲观有内涵概念和外延概念两类

 2015/4/12 18:36:06  flyvszhb  程序员俱乐部  我要评论(0)
  • 摘要:乐观悲观有内涵概念和外延概念两类我先说内涵概念cpu是时分复用的也就是把cpu切片,一片给一个thread/process片与片之间,需要进行cpu切换切换涉及到清空寄存器,缓存数据。然后重新加载新的thread所需数据这个操作必然的会有一定代价这个一般叫状态切换,碰到需要等待的,就切换出去,到blocking队列,然后等条件具备了,在通过notify()。notifyAll()唤醒回来那么,悲观锁,其实就是要经过这个过程的锁在某个资源不可用的时候,就将cpu让出
  • 标签:概念
乐观悲观有内涵概念和外延概念两类
我先说内涵概念
cpu是时分复用的
也就是把cpu切片,一片给一个thread/process
片与片之间,需要进行cpu切换
切换涉及到清空寄存器,缓存数据。然后重新加载新的thread所需数据
这个操作必然的会有一定代价
这个一般叫状态切换,碰到需要等待的,就切换出去,到blocking队列,然后等条件具备了,在通过notify()。notifyAll()唤醒回来
那么,悲观锁,其实就是要经过这个过程的锁
在某个资源不可用的时候,就将cpu让出,把当前等待线程切换为blocking状态
等到资源(比如一个共享数据)可用了,那么就将线程唤醒,让他进入runnable状态
等待cpu调度
那么 可以看到,如果一个资源占用时间很短,那么你第一次看,可能这个资源被占用,但当你花费100000个周期切换到blocking的时候,可能立刻就发现自己被唤醒了,于是再花费100000个周期回来抢锁
这个代价明显就高了
于是就产生了乐观锁的概念,他的核心思路就是,我不让出cpu,我while循环1000次,每次2个时钟周期,那么总共我花费了2000个时钟周期,可能就能拿到这个资源
#概数核心是比,你们要分清主次矛盾#
于是,当数据争用不严重,或者入锁处理出锁比较快的时候,乐观锁往往会有更好地效果

内涵概念讲解完毕,再看外延概念

可能由于网络原因,"可以看到,乐观锁的核心是不让出,通过while(true)循环的方式来判断当前锁状况,于是就引申一下, 在各类分布式系统中,“判断某个数据是否能访问,不能访问立刻返回false",通过循环来获得某个资源的访问权限的过程,都被叫做乐观锁了"的消息发送失败。
可能由于网络原因,"对应到Java实现,那么可以认为 tryLock接口是乐观锁实现中的原子接口"的消息发送失败。
有这个外延的原因是,他们实现的方式都一样,类似
while(true)
{
tryLock() == true?
{
       do sth.
}
}
发表评论
用户名: 匿名