摘要: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(
阅读全文
摘要:队列分为两类 阻塞队列 BlockingQueue提供如下两个支持阻塞的方法: (1)put(E e): 尝试把e元素放如BlockingQueue中,如果该队列的元素已满,则阻塞该线程。 (2)take(): 尝试从BlockingQueue的头部取出元素,如果该队列的元素已空,则阻塞该线程。 j
阅读全文
摘要:接下来的几篇博客会介绍下juc包下的相关数据结构 包含queue,list,map等 这篇文章主要模拟下阻塞队列。 下面是代码
阅读全文
摘要:CyclicBarrier 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point) 然后一再执行 运行结果如下 在这里 需要说下和CountDownLatch的区别 CountDownLatch 阻塞的是 主线程 CyclicBarrier 阻塞
阅读全文