
并发编程
文章平均质量分 68
搬砖奋斗史
这个作者很懒,什么都没留下…
展开
-
Java中的锁
悲观锁与乐观锁悲观锁:认为数据很容易被其他线程修改 ,在对数据处理前先对数据进行加锁,在整个数据处理过程中数据处于锁定状态。乐观锁:乐观锁是相对于悲观锁来说的,它认为数据一般不会造成冲突,只在数据更新时,才对数据冲突与否做检测。公平锁与非公平锁(先来后到锁)公平锁:ReentrantLock pairLock = new ReentrantLock(true);非公平锁:ReentrantLock pairLock = new ReentrantLock(false);构造器不传参,则默.原创 2020-07-09 17:50:35 · 198 阅读 · 0 评论 -
Java中的CAS操作
在Java中,锁在并发处理上占据一席之地,但是使用锁有一个很不好的地方,当一个线程未获取到锁时会被阻塞挂起,这会导致线程上下文的切换和重新调度开销。Java提供非阻塞的volatile关键字来解决共享变量的可见性问题,但是却不能解决读写一致性问题。CAS 是compareAndSwap的缩写,是JDK提供的非阻塞原子性操作,他通过硬件保证比较-更新的原子性。JDK中的Unsefe类提供了一系列的compareAndSwap*方法。 Unsafe类中的重要方法//返回指定的变量在所属类中的内存偏移地原创 2020-07-09 16:19:12 · 370 阅读 · 0 评论