文章分类 - 并发编程
摘要:首先我们先来看看使用zk实现分布式锁的原理,在zk中是使用文件目录的格式存放节点内容,其中节点类型分为: 持久节点(PERSISTENT ):节点创建后,一直存在,直到主动删除了该节点。 临时节点(EPHEMERAL):生命周期和客户端会话绑定,一旦客户端会话失效,这个节点就会自动删除。 序列节点(
阅读全文
摘要:说完ThreadLocal,感觉到ThreadLocal的功能强大,但是如果出现父子线程那么子线程如何获取到父线程的线程变量呢?
阅读全文
摘要:字面意思:循环障碍? 它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。 先直接上代码: 结果: 分析:线程进入执行,调用barrier.await()方法,阻塞想吃,当阻塞线程数达到规定数后,唤醒全部阻塞线
阅读全文
摘要:场景:主线程运行,到一定点之后,由于任务比较重,则线程执行,同时可以执行的线程数为n,等待每个线程都执行完毕后主线程继续往下执行; CountDownLunch即可实现计数操作,等待所有线程执行完毕后主线程开始执行; Semaphore即可控制共享资源的最大线程数,通过semaphore.acqui
阅读全文
摘要:ReentrantLock是AQS提供的可重入锁,一般和Condition配合使用,达到对线程分组唤醒功能;Condition中的wait()和signal()方法等同Object的wait()和notify()方法; 1.ReentrantLock重入锁使用: 1.1 代码 1.2运行结果: 1.
阅读全文
摘要:线程池的优点: 1、提高资源利用率 线程池可以重复利用已经创建了的线程 2、提高响应速度 因为当线程池中的线程没有超过线程池的最大上限时,有的线程处于等待分配任务状态,当任务到来时,无需创建线程就能被执行。 3、具有可管理性 线程池会根据当前系统特点对池内的线程进行优化处理,减少创建和销毁线程带来的
阅读全文
摘要:计算机内存模型 主内存 (运行内存) + CPU(高速缓冲区1+高速缓冲区2+高速缓冲区3+cpu处理器【寄存器】计算)由于CPu运行效率极高,导致内存读写存在较大差距于是就有了下面运行模型:模型走势:从内存加载数据到高度缓冲区3,高速缓冲区3-->高速缓冲区2-->高速缓冲区1-->cpu计算--
阅读全文
摘要:单例模式:是一种常用的软件设计模式,在它的核心结构中值包含一个被称为单例的特殊类。一个类只有一个实例,即一个类只有一个对象实例。在spring框架中也是保证了所管理的对象都是单例模式;下面简单分析一下常用的单例模式以及各种单例模式的使用场景; 下文代码中的注解解释: 单例模式1:懒汉模式 懒汉模式:
阅读全文