摘要: 1.volatile的应用 定义:Java 编程语言允许线程访问共享变量,为了确保共享变量能够被准确和一致地更新, 线程应该通过排他性单独获得这个变量。 如果一个字段使用volatile修饰,Java 线程内存模型确保所有线程看到这个变量的值是一致的。其生成的汇编指令 包含Lock前缀,实现原理: 阅读全文
posted @ 2016-03-19 17:48 johnson-ycp 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 1.无锁并发编程 避免使用锁,将数据通过一定算法分段,不同线程处理不同段的数据 2.CAS算法 乐观锁 3.使用最少线程 避免创建不需要的线程,造成线程处于等待状态,得不到执行 4.协程:非抢占式的,导致任务时间片分配不均匀 单线程中实在多任务的调度,并在单线程中维持多个任务间的切换 阅读全文
posted @ 2016-03-19 15:59 johnson-ycp 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 1.synchronized 悲观锁(独占锁) 问题:1.多线程环境下,加锁,释放锁导致导致比较多的上下文切换和调度延迟,影响性能 2.一个线程持有锁会导致其他需要该锁的线程挂起 3.线程优先级倒置。线程优先级高的线程等待线程优先级低的线程释放锁 2.乐观锁 : 假设没有冲突去进行操作,如果因为冲突 阅读全文
posted @ 2016-03-19 15:43 johnson-ycp 阅读(1216) 评论(0) 推荐(0) 编辑
摘要: 1.vmstat 测量上下文切换的次数 2.Lmbench3 测量上下文切换的时长 阅读全文
posted @ 2016-03-19 14:59 johnson-ycp 阅读(655) 评论(0) 推荐(0) 编辑