多线程
文章平均质量分 79
白嫖小孙子
某蓝翔技校在校学生,拥有0年开发经验,特点:喜欢白嫖的。
展开
-
阻塞队列
阻塞队列介绍 线程1往阻塞队列中添加元素,而线程2从阻塞队列中移除元素 当阻塞队列是空时,从队列中获取元素的操作将会被阻寒。 当阻塞队列是满时,往队列里添加元素的操作将会被阻塞。 试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。 试图往己满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程从列中移除一个或者多个元素或者完全清空队 列后使队列重新变得空闲起来并后续新增 为什么用?有什么好处? 在多线程领域: 所谓阻塞,在某些情况下会挂起线程(即阻塞),原创 2021-03-25 00:13:14 · 144 阅读 · 1 评论 -
计数器
CountDownLatch 让一-些线程阻塞直到另一些线程完成一 系列操作后才被唤醒 CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程会被阻塞。 其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞), 当计数器的值变为零时,因调用await方法被阻塞的线程会被唤醒,继续执行。 public class TestCountry { public static void main(String[] args) {原创 2021-03-25 00:09:42 · 106 阅读 · 0 评论 -
CAS
CAS CAS—>UnSafe —>CAS底层思想—> ABA —>原子引用更新—>如何规避ABA问题 CAS是什么? 比较并交换 compareAndSet,比较第一次读取的值和期望值是否相同,相同的话就进行交换。 public class Test01 { public static void main(String[] args) { AtomicInteger atomicInteger = new AtomicInteger(5);原创 2021-03-25 00:05:18 · 80 阅读 · 0 评论 -
AQS
可重入锁 显示锁ReentrantLock和隐显锁synchronized 都是可重入锁,可重入锁从一定程度上可以避免死锁 package ss; import java.util.concurrent.locks.ReentrantLock; /** * 肥蛋 * 2021/3/24 */ public class RLock { static ReentrantLock lock = new ReentrantLock(); public static void main(St原创 2021-03-25 00:02:30 · 148 阅读 · 0 评论 -
多线程之线程池
为什么用线程池?优势? 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。 他的主要特点为:线程复用;控制最大并发数;管理线程。 第一:降低资源消耗。通过重复利用己创建的线;程降低线程创建和销毁造成的消耗。 第二:提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。 第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还原创 2021-03-18 00:12:16 · 195 阅读 · 0 评论 -
多线程
多线程的相关概念 1进程和线程 .1进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是操作系统进行资源分配与调度的基本单位。可以把进程简单的理解为正在操作系统中运行的一个程序. 1.2线程 线程(thread)是进程的一个执行单元.一个线程就是进程中一个单一顺序的控制流, 进程的一个执行分支。进程是线程的容器,一个进程至少有一个线程.一个进程中也可以有多个线程. java程序中最少有两个进程并发,一个是垃圾回收器GC,一个是Main方法执行主线程 2主线程和子线程 2.1主线程原创 2021-03-18 00:08:44 · 193 阅读 · 0 评论