jmm
什么是jvm的主内存和工作内存?
主内存就是堆内存,存放程序中的所有的类实例变量,所有静态变量,是多个线程共享的,
工作内存是该线程从主内存中拷贝过来的变量以及访问方法所取得的局部变量,是每个线程私有的,其他线程不能访问,每个线程对变量的操作都是先从主存中拷贝到工作内存的再对其进行操作的方式,多个线程之间不能直接互相传递数据进行通信,只能通过共享变量来进行(消息传递)
什么是不安全?
当多个线程同时操作同一个数据结构的时候发生了相互修改和串行的情况,没有保证数据的一致性
想实现线程安全大致有三种方法?
多实例
使用并发包下面的类库
使用锁机制
public synchronized void A(){}
lock and ReentrantLock
什么是死锁?
俩段逻辑都在等待释放锁才能进行下面的工作