volatile关键字来确保线程间的可见性,可以利用线程可见性在某些场景进行无锁化编程。 下载Hotspot源码: 官网:https://openjdk.org/[https...
关于线程安全问题的简述 多个线程做同一件事的时候 原子性:Syncronized,AtomicXXX,Lock 可见性:Syncronized,volatile 有序性:Sy...
线程启动原理 线程生命周期 阻塞状态分为Blocked,time-waiting.外在表现区别不大,产生的原因不同,可以通过jstack查看,更具体的状态有助于我们排查线程相...
设计原则,是设计模式的基础。在实际开发中,并不是一定要求所有代码都遵循设计原则,我们需要综合考虑人力、时间、成本、质量,不是可以追求完美,要在设当的场景遵循合适的设计原则,体...
访问者模式 访问者模式(Visitor Pattern)是一种将数据结构与数据操作分离的设计模式,是指封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提...
观察者模式 观察者模式(Observer Pattern),又叫发布-订阅(Publisher/Subscribe)模式,模型-视图模式,源-监听器模式或从属者模式。定义一种...
解释器模式(InterPreter Pattern) 解释器模式是指给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用 该表示 来解释语言中的句子,并按照规...
中介者模式(Mediator Pattern) 中介者模式,又称为调解者模式或者调停者模式。它是用一个中介对象封装一系列的对象交互,使得各对象不需要显示的相互调用,降低耦合性...
状态机是状态模式的一种应用,相当于上下文角色的一个升级版。在工作流和游戏中有大量使用。如各种工作流引擎,几乎是状态机的子集和实现,封装状态的变化规则。Spring也给我们提供...
状态模式 状态模式也成为状态机模式,是允许对象在内部状态发生改变时改变它的行为。对象看起来好像改变了它的类,属于行为型模式。 角色: 上下文角色(Context):定义客户端...
命令模式 命令模式是对命令的封装,每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式解耦了请求方与接收方,请求方只需要请求执...
迭代器模式 迭代器模式,又称为游标模式,它提供一种顺序访问集合/容器 对象元素的方法,而又无需暴漏集合内部表示。迭代器模式可以为不同的容器提供一致的遍历行为,而不用关心容器内...
责任链模式 责任链模式,是将链中每一节点看作是一个对象每个节点处理的请求均不同,且内部自动维护一个下一节点对象。当一个请求从链式的首段发出时,会沿着链的路劲依次传递给每一个节...
策略模式 策略模式,又叫政策模式,它是将定义的算法家族分别封装起来,让他们之间可以互相替换,从而让算法的变化不会影响到使用算法的用户,属于行为型模式。 角色: 上下文角色(C...
装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装...
门面模式 门面模式(Facade Pattern),又叫外观模式,提供了一个统一的接口,用来访问子系统中的一群接口。其重要特征时定义了一个高层接口,让子系统更容易使用,属于结...
模板方法模式 模板方法模式(Template Method Pattern),又叫模板模式,是指定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算...
委派模式 委派模式(Delegate Pattern)又叫委托模式,它允许对象组合实现与继承相同的代码重用。它的基本作用就是负责任务的调用与分配任务,是一种特殊的静态代理,可...
组合模式 组合模式,也称为整体部分模式,他的宗旨是通过将单个对象(叶子节点)和组合对象(树枝节点)用相同的接口进行表示,使得客户对单个对象和组合对象的使用具有一致性。(树形结...