00:00
各位同学,我们继续通过上一讲,我们给大家演示了通过关闭偏向所的延时,由默认的四天改为零,让偏向所立刻马上启动生效,我们呢,对应后台的程序就看到了我们的偏向锁状态101跟我们的mark word对象头的标志是吻合的,说明偏向锁确实存在。OK,好,那么这是一种启动偏向锁,验证偏向所的方法,那么接下来我们来试一下第二种方法,那么根据我们前面所讲解,偏向所它出的问题是什么?有默认延时啊,对吧?那么接下来我们来尝试一下,如果你觉得这个命令太长。你不想使用完全可以。来同学们,我们是不是把它拿掉了,程序还是原来这个,那么我们第二种方法呢,直接一上来。你程序启动,你不是默认延时四秒钟吗?那我程序呢,等你我比四秒钟还多,我就五秒钟,那么同学们我们来跑一下这个效果来看一下啊,注意此时我这个已经没有Java虚拟机的参数啊。
01:08
已经全部拿掉了,延时为零的那个已经拿掉了,什么都没有,一切默认,但是呢,我程序故意停止五秒钟,同学们看一下后台我们打印出来的效果会是什么样。来,各位同学请看一下,超过五秒钟以后。偏向锁开启,并且超过了启动时间,这个时候同学们请看多少是不是我们的101直接可以获得呀?哎,所以说同学们可以看得出偏向所有这两种方法都可以获得完整的证明和验证,好那么这个呢,就是我们的第二种情况,先睡了五秒钟,再保证偏向所开始,那么这个偏向锁呢,也就是我们同学们可以看得到摸得着的,好那么接下来呢?除了偏向索以外,那么尽量的再给同学们说全一点,再看看前面这54位,什么叫当前线程指针,那么结合我们之前对理论知识的说明来注意这句话。
02:09
只需要在所第一次被拥有的时候记录下偏向线程ID,那么后续直接就去检查这个mawa里面是不是放自己的线程ID,如果是,那说明什么?还是我OK,那么道理就这么一点,那么下面代码说话来稍微呢把这个案例呢写啰嗦一点,好,那么同学们请跟我来站五秒钟。还是开启想看到偏向锁的效果,那么来,你有一个object,现在我什么都没用,那么class。Layout。好,还是以前这个都很熟悉了啊,不多说。那么来同学们现在是不是只是留了个对象,但是五秒钟偏向所是开启的,我们先来运行第一步,看看它的效果是什么。同学们看一下后台打印出来的东东。
03:01
内容如下。此时对于我们偏向所而言,五秒钟过去以后,稍微等的长一点啊,来同学们多少101,但是会发现这一圈是不是全是000000000,为什么101是没有任何问题的,但是现在我们这个O这个对象。这一块。没有任何跟think同步块相关的,没有加锁,所以说得到我们的第一种结论,那么看一下,我们可以看到锁的状态为幺零,幺就是偏向锁。101偏向所说明偏向所是存在的,只是由于O这个对象没有被纳入S同步加锁,所以线程ID是什么空的,其余的数据上数和无锁状态是一样的,所以说我们这就可以精确的得到无锁的话001,如果是偏向锁的话是101,同学们没有任何问题吧?OK,好,那接下来我们来看一下我们的第二种。
04:04
给它分割好看一点。那接下来呢,我们呢,要干的活呢,也就很简单了,那假设啊,我们现在就来了一个线程T线syized o,那么好,现在呢,我们再打印一下来看看能不能就是说。我没有进行S锁的时候,我这个线程ID这些乱七八糟的全是零,根本没有任何记录,但是现在我挪进来了,有一个线程TS的这个O被使用了,那么看看会不会有当前线程指针被记录进去,好,那么同学们。运行一下。我们呢,五秒钟的时间,稍微等待一下,来看看我们的第二种情况。来我们先看上面横线以上,1015秒钟以上偏向锁启动,但是没有跟C相关线程指针全是零,但是这条短线以下,同学们看效果什么情况。
05:04
来101偏向锁没有任何问题吧,而这一圈二大家看出现11110001011等等,这些说明什么?是不是已经开始有我们的一些所谓的前54位当前线程指针被存进去了,哎,这就说明什么?T1已享受着偏向锁,以后来看这个指针里面如果只要还是它说明还是T1,那么就。可以自动的获得锁,不用申请释放,申请释放这些繁琐的过程,所以呢,得到我们的第二种结论,来同学们偏向锁,当带着线程ID的情况没问题吧,第一行中后面就不再是零了,那么有了这个线程ID,那么来同学们。这个呢,就是我们对偏向所的一个说明和一个讲解,OK,那么它只要是什么使用完了以后,这个T1森子第二轮了以后过来,那么就是与我们偏向所101,并且也写进去了对应的线程ID,那么是多少就是多少,好,那么同学们,这就是我们的第二种方法。
06:05
不带Java虚拟机参数直接可以看到偏向数,那么好,下面来吧,分水岭来了,好日子终会到头,我们前面强调过。是不是这次只有你一个人在爽啊,有且仅有一个县城长期抢到这个所,但是慢慢的县城多了,越来越多,可能就不是两三个,可能是两三百个了,那么这个竞争压力就来了,所以开始有第二个线程来跟你抢了。好,那么下面我们就来看看偏向组的撤销以及。后续偏向锁如何升级到我们的轻量级锁?
我来说两句