java多线程知识点笔记(2)

1.什么是线程安全问题

当多个线程共享同一全局变量,做写的时候,可能会受到其他线程的干扰,导致数据有问题。

2.线程如何如何同步() 保证数据的原子性

synchroized-自动挡

lock-jdk1.5并发包-手动挡

3.什么地方加锁synchroized

真正共享数据的时候

4.有一个线程已经拿到了锁,其他线程已经有cpu执行权限,一直排队,等待其他线程释放锁。

锁是在代码执行完毕或者抛出异常释放。

5.同步的缺点:效率低,锁的资源竞争。

6.锁一直不释放的时候:死锁

7.同步函数使用的是 this锁

一个代码块使用同步函数,另一个函数使用this锁,可实现同步。非this锁不能同步

8.静态同步函数使用的是不是this锁,是当前类的字节码文件.class

9.多线程死锁现象 同步中嵌套同步,互相不释放 

例:线程1 先拿a锁,在拿b锁

      线程2 先拿b锁,在拿a锁

*****10.java内存模型(JMM)

多线程三大特性:

原子性:独一无二,一致性,保证线程安全性

可见性:java内存模型

有序性:join(),wait(),notify()

11.什么是java内存模型?

java内存结构和内存模型不是一回事

内存结构---jvm内存分配

内存模型---jmm--多线程可见性

java内存模型决定了一个线程与另一个线程是否可见

主内存(主要存放共享全局变量)和私有本地内存(本地线程私有变量 )

12.Volatile关键字:强制刷新主内存,不保证原子性

13.原子类:保证原子性,保证安全性

14.什么是ThreadLock

为每一个线程提供一个局部变量





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值