并发是同一时间应对多件事情的能力
Java中的并发编程有:
三种性质
1、可见性:一个线程对共享变量的修改,另外一个线程能立刻看到。缓存可导致可见性问题。
2、有序性:由于编译器优化可能会导致指令顺序发生变化。
3、原子性:一个或者多个CPU执行操作不能被中断,线程的切换会导致原子性问题。
三个问题
安全性的问题:线程安全。
活跃性的问题:死锁问题、活锁、饥饿。
性能问题:减少锁的持有时间:锁粒度的细化,ConcurrentHashMap;可以使用读写锁volatile。Java会将变量直接写入内存,其它线程读取时直接从内存读取。同时禁止指令重新排序。
volatile是一种轻量级线程安全机制;保证可见性和有序性,不能保证原子性。