免费简历模板制作网站,企业所得税税负率怎么算的,小语种服务网站,百度推广 手机网站线程安全 一.线程安全存在的问题二.锁三.关于锁的理解四.关于锁操作混淆的理解4.1两个线程是否对同一对象加锁 一.线程安全存在的问题 为什么这里的count不是一百万呢?这就是线程所存在的不安全的问题,由于线程是抢占式执行,同时执行count,操作本质是三个指令 1.load 读取内存… 线程安全 一.线程安全存在的问题二.锁三.关于锁的理解四.关于锁操作混淆的理解4.1两个线程是否对同一对象加锁 一.线程安全存在的问题 为什么这里的count不是一百万呢?这就是线程所存在的不安全的问题,由于线程是抢占式执行,同时执行count,操作本质是三个指令 1.load 读取内存上的值到寄存器中 2.add 寄存器上的值1 3.save 将寄存器上的值放回到内存中 线程不安全的原因小结: 1.根本原因:线程的随机调度,抢占式执行 2.代码中多个线程,同时修改一个变量 3.多线程修改操作,本身不是原子的. 4.内存可见性问题 5.指令重排序问题 我们可以通过加锁操作来解决线程不安全的问题 二.锁 t1执行lock的时候,就对t1这个线程加锁成功,而t2后执行lock的时候,由于已经加上锁,所以它会进入长时间的阻塞状态,一直阻塞到t1线程unlock之后,才能获取到锁. 三.关于锁的理解
(1) 一个线程加锁,一个线程不加锁,是不是会出现线程安全问题? 答案当然是会出现线程安全问题,因为一个加锁,一个不加锁,不会出现锁竞争,就会出现线程安全问题 (2) 两个线程对不同的对象加锁,会不会出现线程安全问题? 当然也会出现线程安全问题.锁竞争不会出现. 四.关于锁操作混淆的理解
4.1两个线程是否对同一对象加锁 类名.class意思就是类对象,它可以得知类中的属性,名字,参数,访问权限修饰符,继承自哪个类,实现了什么接口. 锁里面传参数是this 就可以等价位 在方法的前面写锁 锁里面传参数是类对象,就相当于锁加上一个静态方法