摘要:
一、5种IO模型 在《Unix网络编程》6.2节中提到了unix下可用的五种IO模型 阻塞IO 非阻塞IO 多路复用IO(select和poll) 信号驱动IO(SIGIO) 异步IO(POSIX的aio_系列函数) 1.阻塞IO模型 最传统的一种IO模型,即在读写数据过程中会发生阻塞现象。 当用户 阅读全文
摘要:
一、CAS的原理: CAS中包含了3个操作数——需要读写的内存位置V(内存位置),进行比较的值A(预期值)和拟写入的新值B(新值)。当且仅当V=A时,CAS才会通过原子方式用新值B来更新V的值,否则不会执行任何操作。并且,无论执行修改与否,都将返回V原有值。且仅且只有一个线程能更新变量的值,而其它线 阅读全文
摘要:
Semaphore官方文档 一、使用信号量实现线程间的通信 /** * Demo:使用信号量实现线程间通信*/ public class SemaphoreDemo { public static void main(String[] args) { // 线程池。信号量通常都是针对多个线程,直接使 阅读全文
摘要:
CyclicBarrier官方文档 一、原理 CyclicBarrier是另外一种多线程并发控制实用工具。它和CountDownLatch非常类似,它也可以实现线程的计数等待,但它的功能比CountDownLatch更加复杂且强大。 CyclicBarrier可以理解为循环栅栏。栅栏就是一种障碍物, 阅读全文
摘要:
CountDownLatch官方文档 一、原理 CountDownLatch是一个非常实用的多线程控制工具类。Count Down在英文中意为倒计时,Latch意为门闩,可以简单的将CountDownLatch称为倒计时器。门闩的含义是:把门锁起来,不让里面的线程跑出来。因此,这个工具通常用来控制线 阅读全文
摘要:
一、定义 装饰器模式又叫做包装模式(Wrapper)。装饰器模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 在以下情况下应该使用装饰器模式: 1.需要扩展一个类的功能,或给一个类增加附加责任 2.需要动态的给一个对象增加功能,这些功能可以再动态的撤销 3.需要增加由一些基本功能的 阅读全文
摘要:
一、定义 代理模式给某一个对象提供了一个代理对象,并由代理对象控制对原对象的引用。在一些情况下,一个客户端不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介作用。 二、类图 代理模式中的角色: ●抽象对象角色:声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对 阅读全文
摘要:
一、定义 简单工厂模式的定义如下: 提供一个创建对象实例的功能,而无需关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。 简单工厂模式,又叫做静态工厂方法。简单工厂其实并不是一种设计模式,反而比较像一种编程习惯,因为使用的非常频繁,所以有些书籍(如《Java与模式》)将其当做一种 阅读全文
摘要:
一、类加载的过程 在java中类装载器把一个类装入JVM,经过以下步骤: 1、装载:查找和导入Class文件 2、链接: (a)检查:检查载入的class文件数据的正确性 (b)准备:给类的静态变量分配存储空间 (c)解析:将符号引用转成直接引用其中解析步骤是可以选择的。在某些情况下,解析阶段可以在 阅读全文