前几期简单介绍了一些线程方面的基础知识,以及一些线程的一些基础用法以及通过jvm内存模型的方式去介绍了一些并发中常见的问题(想看往期文章的小伙伴可以直接拉到文章最下方飞速前往)。本文重点介绍一个概念“无锁” 本期精彩什么是无锁无锁类的原理AtomicIntegerUnsafeAtomicRefere ...
分类:
其他好文 时间:
2019-03-05 23:21:03
阅读次数:
336
队列是常用的数据结构,采用的FIFO(first in firstout)原则,新元素(等待进入队列的元素)总是被插入到尾部,而读取的时候总是从头部开始读取。在计算中队列一般用来做排队(如线程池的等待排队,锁的等待排队),用来做解耦(生产者消费者模式),异步等等。在java多线程应用中,队列的使用率 ...
分类:
其他好文 时间:
2019-03-01 18:46:11
阅读次数:
238
1、eureka版本更新后,pom依赖名称变化 v1.2.7spring-cloud-starter-eureka-server v2.0.0spring-cloud-starter-netflix-eureka-server 2、常用注解 @EnableEurekaServer注解 表示开启Eur ...
分类:
其他好文 时间:
2019-02-17 00:52:59
阅读次数:
468
1、负载均衡算法 总请求数量 % 服务器数量=》实际下标服务器位置 2、不建议使用 Synchronized,使用原子计数器,应为线程安全,效率非常高,使用cas无锁机制 3、Ribbon本地负载均衡 原理:在调用接口时,会在注册中心上获取注册信息服务列表,获取到之后,缓存在jvm本地,让你使用本地 ...
分类:
其他好文 时间:
2019-02-17 00:33:48
阅读次数:
180
无锁竞争的情况下为了减少锁竞争的资源开销,引入偏向锁。 ...
分类:
其他好文 时间:
2019-01-28 01:14:46
阅读次数:
150
JavaSE1.6为了减少获得锁和释放锁带来的性能消耗,引入了“偏向锁”和“轻量级锁”。 在JavaSE1.6中,锁一共有4种状态,级别从低到高依次是:无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态,这几个状态会随着竞争情况逐渐升级。 锁可以升级但不能降级,意味着偏向锁升级成轻量级锁后不能降级成偏... ...
分类:
其他好文 时间:
2019-01-28 01:02:15
阅读次数:
175
原子库为细粒度的原子操作提供组件,允许无锁并发编程。涉及同一对象的每个原子操作,相对于任何其他原子操作是不可分的。原子对象不具有数据竞争(data race)。原子类型对象的主要特点就是从不同线程访问不会导致数据竞争。因此从不同线程访问某个原子对象是良性(well-defined)行为,而通常对于非 ...
分类:
编程语言 时间:
2019-01-25 11:47:43
阅读次数:
213
在并发编程中,对于共享资源的使用需要确保绝对的安全性。除了利用锁机制之外,还有一种无锁的概念。所谓无锁,就是假定在并发情况下,对于共享资源的访问没有冲突,线程可以一直不停的运行,无需阻塞,如果产生冲突,则使用CAS算法确保安全性。Java在很多并发代码中都使用了这种算法。 CAS算法的核心参数如下: ...
分类:
其他好文 时间:
2019-01-23 00:11:35
阅读次数:
204
无锁的思想众所周知,Java中对并发控制的最常见方法就是锁,锁能保证同一时刻只能有一个线程访问临界区的资源,从而实现线程安全。然而,锁虽然有效,但采用的是一种悲观的策略。它假设每一次对临界区资源的访问都会发生冲突,当有一个线程访问资源,其他线程就必须等待,所以锁是会阻塞线程执行的。当然,凡事都有两面,有悲观就会有乐观。而无锁就是一种乐观的策略,它假设线程对资源的访问是没有冲突的,同时所有的线程执行
分类:
编程语言 时间:
2019-01-22 18:37:33
阅读次数:
265