摘要:
linkedList主要要注意以下几点: 1构造器 2 添加add(E e) 3 获取get(int index) 4 删除 remove(E e),remove(int index) 5 判断对象是否存在:contain(E e) Jdk8中的linkedList基于双向链表来实现的 双向链表每个 阅读全文
摘要:
ArrayList主要要注意以下几点: 1构造方法 2添加add(E e) 3 获取 get(int index) 4 删除 remove(int index) , remove(Object o) 5 判断是否存在 contains(Object o) 6 遍历 底层采用数组实现。 1构造方法 有 阅读全文
摘要:
ThreadLocal 叫做 线程局部变量 在详细解释之前 先看一段代码 运行结果如下 可以看到每个Thread都是自己设置进去的那个值,相互不影响 ThreadLocal有两个比较重要的方法 get() set() 下面我们细看一下 get() 下面我们细看一下 set() 总结: 1 Threa 阅读全文
摘要:
当系统系统规模较小,我们可以不使用线程池。但是当系统到达一定规模,频繁的创建和销毁线程池会消耗很多资源。 合理利用线程池能够带来三个好处。 1降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 2提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 3提高线程的可管 阅读全文
摘要:
生产者-消费者 生产者消费者模式是一个非常经典的多线程模式,比如我们用到的Mq就是其中一种具体实现 在该模式中 通常会有2类线程,消费者线程和生产者线程 生产者提交用户请求 消费者负责处理生产者提交的任务,在消费者和生产者之间共享内存缓存区进行通信 常见的实现 可以 通过 wait/notifyAl 阅读全文
摘要:
Master-Worker模式是常用的并行设计模式,可以将大任务划分为小任务,是一种分而治之的设计理念。 系统由两个角色组成,Master和Worker,Master负责接收和分配任务,Worker负责处理任务 。子进程处理完成以后,会把结果返回给Master。 原理图如下 下面代码演示 测试类 注 阅读全文
摘要:
Future 模式 类似于ajax请求 页面异步的进行后台请求 用户无需等待请求的结果 就可以继续浏览或者操作 核心就是:去除了主函数的等待时间,并使得原本需要等待的时间段可以用于处理其他业务逻辑 JDK内置实现Future模式演示一下 阅读全文
摘要:
我们知道 ,hashmap 和 arraylist 是线程不安全的 在多线程环境下有数据安全问题, 当然 我们可以通过Collections的一些方法把他们变成线程安全的, Collections.synchronizedList(list) Collections.synchronizedMap( 阅读全文