摘要: Executor框架集对线程调度进行了封装,将任务提交和任务执行解耦。它提供了线程生命周期调度的所有方法,大大简化了线程调度和同步的门槛。Executor框架集的核心类图如下:从上往下,可以很清晰的看出框架集的各个类,以及它们之间的关系:Executor,是一个可以提交可执行(Runnable)任务... 阅读全文
posted @ 2015-11-08 23:54 素轩 阅读(3378) 评论(0) 推荐(1) 编辑
摘要: 1. 复制集(Replica sets)模式时,其会使用下面的local数据库local.system.replset 用于复制集配置对象存储 (通过shell下的rs.conf()或直接查询)local.oplog.rs 一个capped collection集合.可在命令行下使用--oplogS... 阅读全文
posted @ 2015-11-08 23:53 素轩 阅读(4427) 评论(0) 推荐(0) 编辑
摘要: 移相器(Phaser)内有2个重要状态,分别是phase和party。phase就是阶段,初值为0,当所有的线程执行完本轮任务,同时开始下一轮任务时,意味着当前阶段已结束,进入到下一阶段,phase的值自动加1。party就是线程,party=4就意味着Phaser对象当前管理着4个线程。Phase... 阅读全文
posted @ 2015-11-08 23:52 素轩 阅读(551) 评论(0) 推荐(0) 编辑
摘要: Semaphore 直译是信号量,它的功能比较好理解,就是通过构造函数设定一个数量的许可,然后通过 acquire 方法获得许可,release 方法释放许可。它还有 tryAcquire 和 acquireUninterruptibly 方法,可以根据自己的需要选择。以下是模拟一个连接池,控制同一... 阅读全文
posted @ 2015-11-08 23:51 素轩 阅读(274) 评论(0) 推荐(0) 编辑
摘要: CyclicBarrier 直译过来叫循环栅栏,它主要的方法就是一个:await()。await() 方法没被调用一次,计数便会减少1,并阻塞住当前线程。当计数减至0时,阻塞解除,所有在此 CyclicBarrier 上面阻塞的线程开始运行。在这之后,如果再次调用 await() 方法,计数就又会变... 阅读全文
posted @ 2015-11-08 23:50 素轩 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 闭锁是一种同步器 ( Synchronizer ),它可以延迟线程的进度直到线程到达终止状态,CountDownLatch是一个灵活的闭锁实现:1)允许一个或多个线程等待一个事件集的发生,闭锁的状态包括一个计数器,初始化为一个正数,用来实现需要等待的事件数。2)countDown对计数器做减操作,表... 阅读全文
posted @ 2015-11-08 23:50 素轩 阅读(1267) 评论(0) 推荐(1) 编辑
摘要: 可重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍可以获取该锁而不受影响。在JAVA环境下 ReentrantLock 和synchronized 都是 可重入锁。public class Test implements Runnable{ public synchr... 阅读全文
posted @ 2015-11-08 23:49 素轩 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 一. volatite 简述Java 语言提供了一种稍弱的同步机制,即 volatile 变量.用来确保将变量的更新操作通知到其他线程,保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新. 当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的.二. volatit... 阅读全文
posted @ 2015-11-08 23:48 素轩 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题。同步机制可以使用synchronized关键字实现。synchronized关键字修饰一个方法的时候,该方法叫做同步方法。synchronized方法执行完或发生异常时,会自动释... 阅读全文
posted @ 2015-11-08 23:47 素轩 阅读(240) 评论(0) 推荐(0) 编辑
摘要: Java 原生支持并发,基本的底层同步包括:synchronized,用来标示一个方法(普通,静态)或者一个块需要同步执行(某一时刻,只允许一个线程在执行代码块)。volatile,用来标识一个变量是共享变量(线程不缓存),更新和读取是原子的。wait,线程等待某一个Object上的事件(notif... 阅读全文
posted @ 2015-11-08 23:44 素轩 阅读(290) 评论(0) 推荐(1) 编辑
摘要: Unsafe类在jdk 源码的多个类中用到,这个类的提供了一些绕开JVM的更底层功能,基于它的实现可以提高效率。但是,它是一把双刃剑:正如它的名字所预示的那样,它是Unsafe的,它所分配的内存需要手动free(不被GC回收)。Unsafe类,提供了JNI某些功能的简单替代:确保高效性的同时,使事情... 阅读全文
posted @ 2015-11-08 22:35 素轩 阅读(11739) 评论(4) 推荐(1) 编辑
摘要: (八)模板方法模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤。templateMethod()会依次调用operationA(),operationB()。这两个方法,可以为抽象方法,这时,每个扩展子类都必须... 阅读全文
posted @ 2015-11-08 22:33 素轩 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 在编写和维护公司的现有代码的时候,我经常思考的问题是:怎样的系统算一个好的系统?如何设计具有扩展、可维护、复用的系统,它能最大限度的应对产品经理不断变化的需求。答案似乎是:设计模式。Remember , knowing concepts like abstraction, inheritance, ... 阅读全文
posted @ 2015-11-08 22:31 素轩 阅读(621) 评论(0) 推荐(0) 编辑