线程
文章平均质量分 66
崔格
每天进步一点点!
展开
-
悲观锁与乐观锁
何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先原创 2021-02-22 09:52:05 · 64 阅读 · 0 评论 -
happen-before原则与JMM内存模型
happen-before原则happen-before是JMM最核心的概念,所以在了解happen-before原则之前,首先需要了解java的内存模型。JMM内存模型java内存模型是共享内存的并发模型,线程之间主要通过读-写共享变量来完成隐式通信。java中的共享变量是存储在内存中的,多个线程由其工作内存,其工作方式是将共享内存中的变量拿出来放在工作内存,操作完成后,再将最新的变量放回共享变量,这时其他的线程就可以获取到最新的共享变量。从横向去看看,线程A和线程B就好像通过共享变量在进行隐式原创 2021-02-20 10:04:41 · 216 阅读 · 0 评论 -
volatile学习笔记
一.概念volatile是Java虚拟机提供的轻量级的同步机制简单理解:被volatile修饰的变量能够保证每个线程能够获取该变量的最新值,从而避免出现数据脏读的现象。二.volatile不能保证线程安全1.保证可见性2.不保证原子性(线程不安全)3.禁止指令重排三.volatile与synchronizedvolatile不能保证线程安全而synchronized可以保证线程安全。volatile只能保证被其修饰变量的内存可见性,但如果对该变量执行的是非原子操作线程依旧是不安全的。而syn原创 2021-02-20 09:50:20 · 88 阅读 · 1 评论