多线程
多线程理解
King77777777777
这个作者很懒,什么都没留下…
展开
-
原子类
原子类 对象的数据操作不可分割的。具有原子性,保证了并发下线程安全问题。 https://juejin.im/post/5e4e40d551882549281bec01 线程池数量如何配置? https://juejin.im/post/5e435ac3f265da57537ea7ba ReentrantLock Condition Unsafe 锁消除 锁粗化 死锁 原子类 线程池 生产者消费者 数据库连接池 线程池 ThreadLocal+时间格式和随机数 线程间的通信 公平锁(按照申请锁的顺序)+非公原创 2020-06-01 15:14:53 · 125 阅读 · 0 评论 -
线程池理解
Exchanger 线程间协作的工具类,用于线程间的数据交换 Exchanger接口 public class Exchanger<V> { // public Exchanger() { participant = new Participant(); } }原创 2020-05-30 18:03:32 · 153 阅读 · 0 评论 -
Future模式
Future模式 异步调用实现,请求立即返回一个凭证,另起线程处理真正的实现 jdk中Future模式结构原创 2020-05-29 11:09:20 · 123 阅读 · 0 评论 -
BlockingQueue&ThreadFactory&RejectedExecutionHandler
文章目录BlockingQueueArrayBlockingQueue成员变量构造方法重要方法enqueue(E x)dequeue()ThreadFactoryRejectedExecutionHandler BlockingQueue 阻塞队列接口,继承Queue接口,是一个先进先出的队列,提供阻塞获取和添加元素的方法 public interface BlockingQueue<E> extends Queue<E> { //抛出异常的获取方法 boolean add(E原创 2020-05-29 11:08:44 · 173 阅读 · 0 评论 -
CountDownLatch&CyclicBarrier
文章目录CountDownLatchCountDownLatch结构内部类Sync主要方法countDown()await()getCount()CyclicBarrierCyclicBarrier结构主要方法await()getNumberWaiting()reset() CountDownLatch 允许一个或多个线程等待其他线程操作完成后才执行,底层采用共享锁实现 CountDownLatch结构 public class CountDownLatch { //持有的同步器 private fin原创 2020-05-25 09:05:40 · 118 阅读 · 0 评论 -
ThreadLocal理解
文章目录ThreadLocal成员变量内部类ThreadLocalMap主要方法initialValuesetgetremoveThreadLocal、Thread、ThreadLocalMap关系InheritableThreadLocal子线程继承ThreadLocal ThreadLocal 提供线程局部变量,每个线程都有自己独立初始化的变量副本 优点 实现线程间数据隔离 缺点 内存泄露 线程池重用会造成脏数据 成员变量 //固定hash值增量,使用该值散列出来的结果会比较平均 private原创 2020-05-21 15:34:07 · 140 阅读 · 0 评论 -
线程与进程
并发:宏观并行,微观交替执行 并行:在同一时刻处理进程 同步:进程间相互依赖,下个进程会等待上个进程的结果 互斥:进程间相互排斥的使用临界资源的现象 异步:进程彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。 多线程:多线程是程序设计的逻辑层概念,是进程中并发运行的一段代码。是实现异步的手段。 程序:一段静态的代码,一组指令的有序集合,它本身没有任何运行的含义。 进程...原创 2019-10-09 16:51:07 · 161 阅读 · 0 评论 -
多线程理解
synchronized原理(重量级锁) synchronized对象锁(实例对象、类对象、任意对象),在需要保证原子性、可见性和有序性时可以作为解决方法,为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁 特点 可重入 执行完成或出现异常自动释放对监视器的锁定 非公平 互斥 锁升级 无锁->偏向锁->轻量级锁->重量级锁,锁能升级不能降级(有些jvm实现提供降级) 偏向锁:线程在进入代码块时不用使用CAS来加锁和释放锁,只用比较对象头中线程id与当前线程是否一致,一致则直接原创 2020-05-20 10:58:17 · 197 阅读 · 0 评论