实战java高并发程序设计
Mason技术
暂无
展开
-
走入并行世界
并发偏重于多个任务交替执行,多个任务之间可能串行,并行是真正意义上的同时执行,真实的并行只能出现在多核CPU,因为一个cpu只能执行一个任务无障碍无障碍是一种最弱的非阻塞调度,对于无障碍的线程来说,一但检测到一起修改共享数据,就会立即对自己所做的修改进行回滚,确保数据安全,没有数据竞争,线程顺利完成自己的工作,走出临界区。任何对资源有修改操作的线程,在修改数据前,都需要更新这个一致性标记,原创 2017-07-20 21:08:11 · 179 阅读 · 0 评论 -
java并行程序基础
新建线程start方法创建线程 Thread t1 = new Thread(); t1.start();不要用run方法开启新线程,它只会在当前线程中,串行执行run方法重载run方法,执行任务public static void main(String[] args) { Thread t1 = new Thread(){ @Override publ原创 2017-07-23 00:12:09 · 205 阅读 · 0 评论 -
锁的优化及注意
减少锁持有时间只在必要时进行同步,能明显减少线程持有锁的时间,提高系统的吞吐量减少锁粒度如ConcurrentHashMap,它内部细分若干个小的hashMap,成为段,默认16段,如果增加一个新的表项,并不将整个hashmap加锁,首先根据hashcode得到该表项应该存放到哪个段中,然后对该段加锁,完成put,多个线程同时put,只有被加入的表项不存放在同一个段中,实现真正的并行原创 2017-07-26 23:21:51 · 287 阅读 · 0 评论 -
java8与并行
申明式的编程方式不需要提供明确的指令操作,所有的细节指令被程序库封装,只要提出要求,申明用意public class Test1 { public static void main(String[] args) { int[]ary={1,2,5,2}; for (int i = 0; i < ary.length; i++) { System.out.println(ar原创 2017-08-06 22:09:47 · 343 阅读 · 0 评论 -
JDK并发包
synchronized扩展:重入锁使用java.util.concurrent.locks.ReentrantLock类来实现重入锁必须手动加锁,释放锁,加几次锁,就要释放几次锁,多放,报异常,少放,还有锁public class ReenterLock implements Runnable{ public static ReentrantLock lock = new Ree原创 2017-07-23 20:52:14 · 288 阅读 · 0 评论 -
并行模式与算法
单例模式用来产生一个对象的具体实例public class Singleton { private static Singleton instance = new Singleton(); private Singleton(){ } public static Singleton getInstance(){ return instance; }}不能确保单例在什么时候创原创 2017-08-02 23:02:49 · 388 阅读 · 0 评论