这个视频我看了2遍了,我确信我都弄懂了知识,首先非常感谢悟空大大,但是我觉得你这个第6种情况的实例不妥,因为您测试的是多线程的静态锁方法和非静态锁方法,而您这个地方用的是一个对象测试的,体现不出来多线程访问静态锁方法和非静态锁方法的不同之处,我觉得应该用两个对象来测试,我写了一段代码来测试,不论是否合理,这都是我的想法,请悟空大大评价,我都会采纳建议
2019-01-09
在线程访问第一个上锁的方法的时候,线程拿到了这把锁,同时其他线程陷入阻塞状态在等待,第一个获得锁的线程继续访问第二个上锁的方法,但这个时候,第二个上锁的方法是在第一个上锁方法的内部的,所以这个线程无法释放第一把锁,也就无法拿到第二个方法的锁,所以,此线程陷入了一种既无法释放锁也无法拿到锁的状态,这应该就是死锁了,于此同时其他线程也只能干等着,但是那个线程也很无奈啊,放不下也拿不起,都干等着,我都着急,于是我直接长按电源键,哈哈,这是我的理解
2019-01-09
可以这样理解,因为静态方法属于类,当多个线程访问的这个静态方法的时候,相当于数据共享了,所以当给这个方法上锁之后,肯定是不能同时访问的,而不加static的话,就是多个线程自己执行自己的方法,cpu随机的,就算加了锁也没什么卵用。除非这个Runable子类被其他线程共享,这也是数据共享了
2019-01-08