java多线程
北巷以南猫
https://github.com/huxiaoman7/leetcodebook
展开
-
Java内存模型概述
一、概述 1.TPS(Transacitions Per Sencond):代表每秒内服务器平均能响应的请求总量。TPS值与并发能力有非常密切的关系 2.QPS(Query Per Sencond) :服务器每秒处理的平均请求总量。二、Java内存模型 1.主内存和工作内存 Java内存模型规定所有的变量都存储在主内存中。每个线程还有自己的工作内存,...原创 2018-10-28 22:24:44 · 114 阅读 · 0 评论 -
JUC-CopyOnWriteArrayList
CopyOnWriteArrayList 一、简介: 1.相当于线程安全的ArrayList。 2.对于可变的操作add,set,remove操作,需要复制整个基础数组,开销很大。因此适合读操作频率大于写操作 3.迭代器支持hasNext(),next()操作,不支持remove操作 4.实现List,RandomAccess,Cloneable,Serializab...原创 2018-04-16 22:35:35 · 174 阅读 · 0 评论 -
JUC-ArrayBlockingQueue
一 、简介1.继承AbstractQueue父类,实现了BlockingQueue,SerialIzable接口2.基于数组实现的线程安全的阻塞队列。 3.ArrayBlockingQueue通过Object[]数组来保存数据。初始容量的大小就是创建数组的大小4.ReentranLock锁,ArrayBlockingQueue包含一个ReentranLock锁,为了保持在多线程中实现多线程对数组数...原创 2018-04-18 21:38:02 · 123 阅读 · 0 评论 -
JUC-LinkedBlockingDeque
一、简介 1.LinkedBlockingDeque是基于双向链表实现的并发阻塞队列。支持FIFO和FILO两种操作方式。 2.LinkedBlockingDeque继承了AbstractQueue,实现BlockingDeque接口。也就是支持多线程并发。二、 属性 //链表的头结点 transient Node<E> first; //链表的尾节点 t...原创 2018-04-21 12:34:28 · 118 阅读 · 0 评论 -
线程和虚拟机栈的关系
本文重点讲解线程与虚拟机栈的关系。 虚拟机栈:与程序计数器、本地方法栈都是属于线程私有的JVM内存区域。虚拟机栈的生命周期是和线程相同的,是在JVM运行时创建的,在线程中,方法在执行的过程中会创建一个栈帧。主要用于存放局部变量表、操作栈、动态链接、方法出口等信息。一般将栈帧内存的大小称为宽度,而栈帧的数量被称为虚拟机栈的深度。虚拟机栈的大小可以通过参数-xss配置。因此在同等大小的虚...原创 2018-08-05 14:44:51 · 3588 阅读 · 2 评论 -
ReentrantReadWriteLock源码分析
一、简介 如果在系统中存在多个线程对对象或者缓存进行多或写的操作,但是读操作要远远的多于写操作的。那么就要保证写操作的结果对所有读操作是可见的。 由此可见在多个线程执行写操作时,多线程不能同时执行,必须获取写的锁才能只能写操作。要保证写操作的结果对所有读操作是可见的,就必须在读操作的时候写操作不能获取锁。在写操作时候也不能进行读操作。在多个线程执行读操作,多线程可以并发...原创 2018-09-05 22:58:24 · 341 阅读 · 0 评论