我理解应该是会失效,因为类锁是对你创建线程时传入的类加锁,如果你两次传入的是不同的类,就是给不同的类加锁,没有竞争资源,但是并不影响不同的类执行自己的代码逻辑,就是说会同时并行你创建线程时传入的类的处理逻辑,如果创建线程时都不传入当前类,当前类的逻辑不会执行,也就无法验证当前类的锁是否有效了,因为没有线程要获取当前类的资源
搞错了不会有问题因为多线程只有静态变量和成员变量是共享的。局部变量互不影响。看到老师只用一个对象调用run方法所以不知道局部变量会不会有影响。百度了 不会有影响所以j++没有并发问题。
不能了,因为课程被下架了
是的 这算是三个线程在运行不干扰 cpu分配的资源多自然先运行完
被继承了哪儿的值吗
把对象放main里面线程也不是正常的啊?还是有并发问题啊。而且就算是创建两个ShowUnSafe对象线程也不会正常。因为出问题的是静态变量i。
盲猜不安全,可以试一下,应该是同步执行,执行非同步方法不需要获取锁直接执行,执行同步方法才需要获取锁
课程中for循环100000, 两个线程同时执行不就是这种情况吗
就是dubugger
同学,这个课程没有提供源代码,不过课程的代码量很少,你可以自己敲一下哈,不会花费太多时间,也可以同时巩固一下知识。
时长是有所更新和调整哈,不过不用担心,核心内容没有太大变化。
????点赞点赞
实战课里提供了代码
glance
分布式系统中,每个docker实例内,依然有应用的空间,例如控制单机的运算压力。
课程最后一小节有讲思维导图的获取方法。代码比较简单哈。
两个线程使用的是两个不同的锁,线程之间没有相互影响。
当然不行了,这个你打开IDE试一下不就知道了嘛?
synchronized的两种用法:
1.对象锁
方法锁(修饰方法,默认锁对象为this当前实例对象)
同步代码块锁(修饰代码块,自己指定锁对象)
2.类锁
修饰静态的方法或指定锁为Class对象(同步代码块使用Class对象做锁)
我对jvm不太了解,但用Linux中的给你解释下。
当一个线程想去获取一把锁而获取不到时,是处在一个死循环状态。
while( 没有得到锁)
{
尝试获取锁;
}
所以就相当于死在了这个循环里面。
当然还有尝试锁,先尝试获取,没获取到就退出,而不是死在循环中。
锁的内容还有很多,慢慢学吧。