java并发编程
cygodwg
663207134562
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
千篇一律的啰嗦,不重要,也很重要
我们要了解几个问题为什么使用多线程?要充分利用系统的资源,在这个多核的时代,明明有一双手,非要单手干活,这可不做贱自己的能力么,当然作为资格的老程序员,深夜单手的干活还是非常有利的^-^.多线程是否就一定比单线程强?不一定,线程切换需要时间,这就要看切换的时间和多个线程并发所节省的时间哪个更多。多线程的弊端?并发编程真的很麻烦!需要我们下不少功夫。最大的问题就是多线程带...原创 2018-08-29 10:10:22 · 143 阅读 · 0 评论 -
并发的安全问题1——前奏
进入并发安全性之前,我们得先了解几个概念。临界区:同一时刻,只能被一个线程访问的共享资源,实现临界区的方式很多,我们后面会有列出。阻塞、非阻塞:阻塞就是进入临界区之前,没占到坑位,你得排队,还不能走。非阻塞就是坑位被占,回去,过会来看看是否有线程在使用。进程:简单点,就是一个执行的应用。线程:一个进程下面的运行单元,一个进程下面可以有很多运行单元(多线程)共享变量:java是天...原创 2018-08-29 10:28:40 · 183 阅读 · 0 评论 -
并发编程的安全性(2)
安全:安全的首先是正确的且是我们预期的,正确性:某个类的行为与其规范完全一致。在良好的规范中通常会定义各种不变性条件来约束对象的状态,以及定义各种后验条件来描述对象操作的结果。我们根据这些规范在单线程中运行获取正确的预期结果,代表这个程序的正确性,即所见即所知。而当多个线程同时访问某个类,这个类始终能保持其正确性,我们就认为这个类是线程安全的。(无状态对象一定是线程安全的)原子...原创 2018-08-29 14:02:39 · 152 阅读 · 0 评论 -
volatile功能与原理
功能:volatile提供了稍弱的同步机制。被volatile修饰的变量可确保将变量的更新及时通知到其他线程。编译器不会针对volatile修改的变量与其他变量内存重排序。valatile不会缓存到寄存器。访问volatile不会执行加锁操作。使用volatile最亮眼的是它的可见性。从内存可见性角度看:读取volatile相当于进入同步代码、写入volatile变量相...原创 2018-08-29 16:14:45 · 384 阅读 · 0 评论 -
并发编程-发布与逸出
发布:对象能在当前作用域之外的代码中使用。发布方式:1、对象引用保存到其他地方2、public方法返回对象引用3、引用传递到其他方法某个不该发布的对象发布,这种情况成为逸出封装使得程序的正确性进行分析变得可能,这也是封装最重要的意图,安全的对象构造构造对象的过程中不要让this引用逸出,常见的是在构造函数中启动一个线程。启动线程后,新的线程能够访问该对象的this,...原创 2018-08-29 23:40:01 · 239 阅读 · 0 评论 -
activemq故障1-扫码结果查询故障
故障描述中行扫码支付接入系统,并发量稍微高一点,就有不时出现查询任务发送了,但是没有线程接收到任务查询信息的故障。故障原因系统当时设置的消费者并发量是5个,采用了事务消息确认机制,使用了默认的prefetchSize,而事务的prefetchSize默认大小为1000个,(当broker有需要处理的消息后,主动push给某个线程)而我们的业务有这种问题,用户获取了支付页面,但并不支...原创 2018-10-11 09:54:31 · 350 阅读 · 0 评论
分享