![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 95
shanchahua123456
这个作者很懒,什么都没留下…
展开
-
JAVA ThreadPoolExecutor线程池
部分资料来自网络https://www.cnblogs.com/fixzd/p/9253203.htmlhttps://blog.csdn.net/qq_30572275/article/details/80543921设计ThreadPoolExecutor中存在内部类Worker,线程池通过HashSet<Worker>保存这些Worker对象。Worker...原创 2019-04-16 10:39:41 · 246 阅读 · 0 评论 -
JAVA8 ConcurrentHashMap 源码分析
参考文章:http://www.cnblogs.com/huaizuo/archive/2016/04/20/5413069.htmlhttps://www.cnblogs.com/leesf456/p/5453341.htmlhttps://www.toutiao.com/a6644172932811588103/?tt_from=weixin&utm_campaign=cl...原创 2019-01-09 14:12:53 · 265 阅读 · 0 评论 -
Github项目NettyRpc 阅读(Netty+同/异步通讯+多线程+AQS+CAS+volatile)
Github项目:https://github.com/luxiaoxun/NettyRpcFork:https://github.com/sw008/NettyRpc此项目很适合学习多线程和NettyRPC调用流程大体思路:整个异步/同步通讯流程,适用于大多数同步/异步socket通讯场景。可以在此基础上拓展实现例如异步回调等多种使用功能。整个异步请求+响应过程,通过Concu...原创 2019-01-06 17:19:23 · 313 阅读 · 0 评论 -
JAVA AbstractQueuedSynchronizer(AQS)与LockSupport解析
部分资源源自网络一行一行源码分析清楚AbstractQueuedSynchronizerhttp://www.cnblogs.com/waterystone/p/4920797.htmlAQS的经典使用案例推荐JDK中JUC组件源码:ReentrantLock、ReentrantReadWriteLock、Semaphore、CountDownLatch等ReentrantRead...原创 2018-09-19 23:53:08 · 319 阅读 · 0 评论 -
基于Spring内置AbstractRoutingDataSource实现MyBatis线程级动态数据源
github 代码:https://github.com/sw008/Repository其他文章:https://www.liaoxuefeng.com/article/00151054582348974482c20f7d8431ead5bc32b30354705000https://blog.csdn.net/u013360850/article/details/78861442...原创 2018-09-16 17:09:23 · 932 阅读 · 0 评论 -
session一致性架构设计实践
原文地址:https://www.w3cschool.cn/architectroad/architectroad-session-consistency.html一、缘起什么是session?服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文。Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建session,提供数据存储功能。最常见的,会...转载 2018-07-10 17:49:17 · 109 阅读 · 0 评论 -
Java NIO SocketChannel+Buffer+Selector 详解(含多人聊天室实例)
一、Java NIO 的核心组件Java NIO的核心组件包括:Channel(通道),Buffer(缓冲区),Selector(选择器),其中Channel和Buffer比较好理解简单来说NIO是面向通道和缓冲区的,意思就是:数据总是从通道中读到buffer缓冲区内,或者从buffer写入到通道中。关于Channel 和 Buffer的详细讲解请看:Java NIO 教程二、J...转载 2018-03-13 20:21:40 · 2337 阅读 · 0 评论 -
JAVA 重入锁 synchronized+ReentrantLock
1重入锁:线程重复获得已经持有的锁,锁有一个"持有计数器"跟踪锁的嵌套2 锁和条件的作用 锁:用来保护代码片段,任何时候同一个对象只能有一个线程执行被某一个锁保护的代码 锁:管理试图进入被保护代码片段的线程,同一对象的一个锁在同一时间只能被一个线程持有 锁:可以拥有多个不同的条件对象 条件对象:管理已经持有锁(已进入保护代码片段),但是不满足某个条件不能继续的线程,使其暂时放弃锁...原创 2018-03-19 21:06:17 · 164 阅读 · 0 评论 -
NIO+SocketChannel+Buffer+Selector 多路复用
原文 点击打开链接现在使用NIO的场景越来越多,很多网上的技术框架或多或少的使用NIO技术,譬如Tomcat,Jetty。学习和掌握NIO技术已经不是一个JAVA攻城狮的加分技能,而是一个必备技能。再者,现在互联网的面试中上点level的都会涉及一下NIO或者AIO的问题(AIO下次再讲述,本篇主要讲述NIO),掌握好NIO也能帮助你获得一份较好的offer。 驱使博主写这篇文章的关键是网上关于N...转载 2018-03-12 21:25:50 · 390 阅读 · 0 评论 -
JAVA AtomicRefence 原子引用CAS
1AtomicRefence的CAS操作只比较引用变量的引用是否发生变化,若引用没变则设置为新的引用。CAS操作不关心引用的对象的属性变化,只关心引用变化,因为CAS操作用"=="比较原值CAS思想流程: now=get()当前值 --> 计算处理 --> CAS比较now? 交换 : 失败(原子完成)例如:public class AtomicRefence测试 ...原创 2018-03-17 13:37:07 · 430 阅读 · 0 评论 -
CountDownLatch 倒计时门栓用例
import java.util.concurrent.CountDownLatch;class Driver { void main() throws InterruptedException { CountDownLatch startSignal = new CountDownLatch(1); CountDownLatch doneSignal = n...原创 2018-03-10 12:08:08 · 241 阅读 · 0 评论 -
JAVA ThreadLocal<T>
ThreadLocal:线程本地变量。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。适用:1 需要各个线程间独立的变量,2 同线程下多方法传递的变量(解决某些方法无法相互传参)1ThreadLocal适合解决共享/单例对象 的成员变量,在多线程下保持各个线程独立性2 类的静态ThreadLocal,注意同线程变量覆盖问题3T...原创 2018-03-06 22:20:49 · 228 阅读 · 0 评论 -
JAVA volatile关键字
(内容有部分借鉴其他文章)被volatile修饰的共享变量,具有了以下特性:1 .可见性 2 .有序性 3. 非线程安全,非原子操作1 可见性:当一个变量被volatile修饰时,那么对它的修改会立刻刷新到主存,当其它线程再次需要读取该变量时,会去内存中读取新值。而普通变量则不能保证这一点。(*只有再次需要读取时才会读主内存,已经读过的不会更新,看3)其实通过synchroni...原创 2018-03-06 21:07:42 · 883 阅读 · 1 评论 -
JAVA 线程安全三要素
(转载)1 . 原子性(Atomicity):Java中,对基本数据类型的读取和赋值操作是原子性操作,所谓原子性操作就是指这些操作是不可中断的,要做一定做完,要么就没有执行。比如:i = 2; //原子j = i; //非原子 (1 读i,2 赋值j)i++; //非原子 (1 读i,2 +1 ,3 赋值i)i = i + 1; //非原子 (1 读i,2 +1 ,3 赋值i)上面4...原创 2018-03-06 21:15:11 · 2320 阅读 · 0 评论