设计模式(十一)—— 原型模式 发表于 2019-10-30 | 分类于 技术文章 原型模式1、定义与特点定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。 原型模式的核心是一个clone方法,通过该方法进行对象的拷贝,Java提供Cloneable接口来标示这个对象是可拷 ... 阅读全文 »
设计模式(二十三)—— 桥接模式 发表于 2019-10-30 | 分类于 技术文章 桥接模式定义将抽象和实现解耦,使他们可以独立变化。用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。 Abstraction:抽象化角色,主要职责是定义出该角色的行为,同事保存一个对实现化角色的引用。 Implementor:实现化角色,定义角色必需的行为和属性。 Ref ... 阅读全文 »
设计模式(二十二)—— 享元模式 发表于 2019-10-30 | 分类于 技术文章 享元模式定义运用共享技术有效的支持大量细粒度对象的复用,通过共享已经存在的对象来减少需要创建的对象数量,避免大量相似类的创建开销,从而提高李彤资源利用率。 Flyweight:抽象享元角色,定义对象的外部状态和内部状态的接口或实现。 ConcreteFlyweight:具体享元角色,实现抽象角色 ... 阅读全文 »
设计模式(九)—— 策略模式 发表于 2019-10-30 | 分类于 技术文章 策略模式定义定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。 Context:封装角色,起承上启下封装作用,屏蔽高层模块对算法的、策略的直接访问,封装可能存在的变化。 Strategy:抽象策略角色,策略、算法的抽象,通常为接口,定义每个策略或算法 ... 阅读全文 »
设计模式(二十一)—— 解释器模式 发表于 2019-10-30 | 分类于 技术文章 解释器模式定义给定一门语言,定义它的文法的一种表示,并定义一个解释器来解释语言中的句子。 AbstractExpression:抽象解释器,定义解释器的接口,约定解释器的解释操作,主要包含解释方法 interpret()。 TerminalExpression:终结符表达式,实现与文法中的元素相 ... 阅读全文 »
Java多线程(三)——synchronized关键字(下) 发表于 2019-04-07 | 分类于 技术文章 在前两节的《Java多线程学习(一)——多线程基础》和《Java多线程学习(二)——Thread类的方法介绍》中我们接触了线程安全和非线程安全的概念,这节就来学习一下synchronized关键字的使用。 1、变量的线程安全性“非线程安全”问题存在于“实例变量中”,如果是方法内部私有的变量,则不存在 ... 阅读全文 »
Java多线程(五)——等待通知 发表于 2019-04-07 | 分类于 技术文章 等待通知机制的实现方法wait()的作用是使当前线程进行等待,wait()方法是Object类的方法,该方法用来将当前线程放到“预执行队列”,并在wait()所在的代码处停止执行,直到接到通知或中断为止。只能在同步方法或同步快中使用wait()方法,执行wait()后,当前线程释放锁。 方法noti ... 阅读全文 »
Java多线程(二) 发表于 2019-04-07 | 分类于 技术文章 Thread类的一些方法介绍1、currentThread()方法currentThread()方法可以返回代码被那个线程调用的信息。 测试方法如下: 12345678910111213141516171819202122232425public class MyThread extends Thr ... 阅读全文 »
Java多线程(四)——volatile关键字 发表于 2019-04-07 | 分类于 技术文章 volatile关键字当用volatile关键字声明变量的时候,就等于告诉虚拟机,这个变量极有可能被某些程序或者线程修改,为了保证比那辆被修改后应用程序范围内的所有线程可以看到这个改动,虚拟机必须采用一些方法保证这个变量的可见性。 volatile与死循环1234567891011121314151 ... 阅读全文 »
Java多线程(一) 发表于 2019-04-07 | 分类于 技术文章 1、进程和线程1.1 进程进程是操作系统运行程序的基本单位,是一次程序的执行。简单来说一个进程就是一个运行中的程序。 1.2 线程线程可以认为是在进程中独立运行的子任务。一个进程会有多个线程。 1.3 进程和线程区别进程和线程最大区别就是,各个进程是独立的,而线程却不一定,同一进程中的线程可能是相互 ... 阅读全文 »