参考SLF4J不同的日志实现选择https://blog.csdn.net/u010825931/article/details/106167241使用SLF4J和Logback
CAS概念CAS是 Compare And Swap(比较并交换)/ Compare And Exchange(比较并交换)/ Compare And Set (比较并设定)一种无锁算法/机制无锁编程,即不使用锁的情况下实现多线程之间的变量同步,也就是在没有线程被阻塞的情况下实现变量的同步,所以也叫
乐观锁和悲观锁乐观锁总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库提供的类似于write_condition机制,其实都是
Volotile概念意思为易变的; 无定性的; 无常性的; 可能急剧波动的; 不稳定的;等。保证线程可见性。(底层靠CPU的缓存一致性协议MESI保证)禁止指令重排序。(依靠内存屏障实现)不能保证原子性,即不能替换synchronized。线程可见性java中存在堆内存,堆内存对所有线程共享,此外,
ReentrantLock与ReadWriteLockReentrantLock互斥锁,lock将语句块标记为临界区,当一个线程获取到锁后,其他线程如果需要使用该临界区则必须要等待前一个线程使用完毕后释放锁后才可以使用。ReadWriteLock读写锁,可以提高并发访问的性能,使用readwrite
synchronized概念意思为同步,同步的等意思;主要用于处理多线程并发。synchronized的底层实现虚拟机里没有规范要求,由具体的JVM实现(如hotspot)。保证原子性,保证可见性,保证有序性。可重入属性。修饰的方法/代码块中执行如果出现异常(不try catch的话),那么会默认释