首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Java并发编程
_空白_
创建于2023-05-10
订阅专栏
Java并发编程
等 1 人订阅
共18篇文章
创建于2023-05-10
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Java并发编程(十八)CompletableFuture
1 CompletableFuture的描述 常见的异步编程开发 Thread + Runnable:执行异步任务,但是没有返回结果 Thread + Callable + FutureTask:完整
Java并发编程(十七)Future&FutureTask
1 Future Java创建线程的方式,一般常用的是Thread,Runnable。如果需要当前处理的任务有返回结果的话, 需要使用Callable。 Callable运行需要配合Future。 F
Java并发编程(十六)CopyOnWriteArrayList
1 CopyOnWriteArrayList介绍 CopyOnWriteArrayList是一个线程安全的ArrayList。 CopyOnWriteArrayList是基于lock锁和数组副本的形式
Java并发编程(十五)SynchronousQueue
1 SynchronousQueue的介绍与应用 SynchronousQueue队列虽然实现了BlockingQueue接口,但它并不是传统意义上的队列,SynchronousQueue的长度是0,
Java并发编程(十四)DelayQueue
1 DelayQueue的应用 DelayQueue是无界队列,队列中的元素要实现Delayed接口,重写getDelay和compareTo方法 getDelay:什么时候可以出队列 compare
Java并发编程(十三)PriorityBlockingQueue
PriorityBlockingQueue是优先级阻塞队列,实现跟PriorityQueue基本一模一样 1 PriorityQueue 非阻塞的优先级队列,底层基于数组实现,可以扩容,是真正意义上的
Java并发编程(十二)阻塞队列LinkedBlockingQueue
1 LinkedBlockingQueue核心属性 底层基于链表实现的,会将每个元素封装为Node,Node有当前值,还有一个next指针,默认情况下最大长度为Integer.MAX_VALUE,一般
Java并发编程(十一)阻塞队列ArrayBlockingQueue
阻塞队列: 队列,先进先出的一个数据结构 阻塞,基于ReentrantLock实现的,并且线程的挂起也是通过Condition ArrayBlockingQueue底层是采用数组实现的一个队列。因为使
Java并发编程(十)CyclicBarrier
1 CyclicBarrier的应用 CyclicBarrier可以理解为循环栅栏。 在使用中要求必须规定数量的线程都到达栅栏后,所有在栅栏前等待的线程才能都继续执行。 CyclicBarrier可以
Java并发编程(九)Semaphore
1. Semaphore应用 一般用于流控。比如有一个公共资源,多线程都可以访问时,可以用信号量做限制。 连接池,内部的链接对象有限,每当有一个线程获取连接对象时,对信号量-1,当这个线程归还资源时对
Java并发编程(八)CountDownLatch
1. CountDownLatch的基本应用 CountDownLatch本身就好像一个计数器,可以让一个线程或多个线程等待其他线程完成后再执行 应用方式 2. CountDownLatch核心源码分
Java并发编程(七)ThreadPoolExecutor(线程池)
1. 线程池介绍 Java构建线程的方式 new Thread new Runnable new Callable 为了避免频繁创建和销毁线程造成不必要的性能,一般在使用线程时,会采用线程池 核心线程
Java并发编程(六)ConcurrentHashMap的扩容
三种触发方式 当前容量超过阈值 当链表中元素个数超过默认设定(8个),当数组的大小还未超过64的时候,此时进行数组的扩容 当发现其他线程扩容时,协助扩容 1. tryPreSize方法-初始化数组 2
Java并发编程(五)ConcurrentHashMap
1. 结构介绍 ConcurrentHashMap和HashMap的存储结构是一致的。 ConcurrentHashMap是线程安全的。 存储结构 关于put和putIfAbsent的区别 2. 散列
Java并发编程(四)ReentrantReadWriteLock源码
1. 为什么要出现读写锁 因为ReentrantLock是互斥锁,如果有一个操作是读多写少,同时还需要保证线程安全,那么使用ReentrantLock会导致效率比较低。 因为多个线程在对同一个数据进行
Java并发编程(三)ReentrantLock源码
1. ReentrantLock介绍 Java中提供锁,一般就是synchronized和lock锁,ReentrantLock是互斥锁,跟synchronized一样。 如果竞争比较激烈,推荐loc
Java并发编程(二)synchronized
1.synchronized的使用方式 synchronized方法 synchronized代码块 类锁和对象锁 类锁:基础当前类的Class加锁(当synchronized修饰静态方法时是使用当前
Java并发编程(一)原子性、有序性、可见性
1.原子性 原子性:一个或多个指令在CPU执行过程中是不允许中断的。 问:i++是否是原子性操作 答:否,i++操作一共有三个指令,不属于原子性操作 getfield:从主内存拉取数据到CPU寄存器