![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程与高并发
文章平均质量分 87
靠才华吃饭的人
这个作者很懒,什么都没留下…
展开
-
多线程与高并发(九):线程池
1、简介 1.1、 线程池的概念: 线程池是线程的集合,它会初始化一些线程,当有任务提交给线程池时,线程池会分配空闲的线程去执行任务,执行结束之后,线程会再次成为空闲状态,等待执行下一个任务。 1.2、 线程池的优点: 线程池可以重用已存在的线程,降低操作系统重复创建和销毁线程的资源消耗。 线程池可以提前创建好线程,当任务到达时,无需等待创建新的线程便可立即执行,提高系统响应速度。 可以通过线程池对系统并发量进行控制,线程若是无限制地创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换。 提原创 2021-03-02 22:44:14 · 234 阅读 · 0 评论 -
多线程与高并发(八):Callable
在Java中,创建线程除了继承Thread类和实现Runnable接口之外,还可以通过实现Callable接口创建线程。 一、如何通过实现Callable接口创建线程 public class MyThread implements Callable<Object> { @Override public Object call() throws Exception { return "this is my thread"; } } 二、Cal.原创 2021-03-02 00:19:54 · 232 阅读 · 2 评论 -
多线程与高并发(七):常用容器的简单介绍
2021/02/27原创 2021-02-28 20:00:58 · 238 阅读 · 3 评论 -
多线程与高并发(六):ThreadLocal
2121/02/27原创 2021-02-27 15:40:38 · 292 阅读 · 0 评论 -
多线程与高并发(五):AQS
一、简介 1、什么是AQS AQS全名AbstractQueuedSynchronizer,抽象的队列式的同步器,它定义了一套多线程访问共享资源的同步器框架,许多同步类都依赖于它,如ReentrantLock、CountDownLatch、Semaphore等 2、AQS的结构 AQS主要为一个volatile的state和一个CLH队列组成。 二、AQS原理 1、state AQS主要通过state去控制线程对共享资源的访问,此处的state用volatile修饰,主要原因为让stat.原创 2021-02-27 01:29:19 · 196 阅读 · 0 评论 -
多线程与高并发(四):JUC中的多线程辅助类
一、CountDownLatch CountDownLatch是门栓的意思,在计数器减为0前 二、CyclicBarrier 三、Phaser 四、Semaphore 五、Exchanger 六、LockSupport 七、ThreadLocal原创 2021-02-24 17:23:12 · 141 阅读 · 4 评论 -
多线程与高并发(三):JUC中常用的锁
一、常用的锁 1、ReentrantLock ReentrantLock是Lock的一个实现类,它的底层基于CAS实现,是一种可重入互斥锁,用于替代synchronized,但功能比synchronized更强大。 ReentrantLock的使用: private final ReentrantLock lock = new ReentrantLock(); public void m() { try { lock.lock(); // ... method body } fina原创 2021-02-23 00:06:41 · 238 阅读 · 1 评论 -
多线程与高并发(二):synchronized、volatile和CAS
一、synchronized 1、一些基本概念 1、synchronized可以在任意对象和方法上加锁,加锁的这段代码称为“互斥区”或“临界区”。当一个线程想要执行同步方法里面的代码时,会首先尝试拿到这把锁,如果拿到则能执行,如果不能拿到,则会不断去拿这把锁,直到拿到为止。 2、如果多个线程同时对同一个对象中的同一个实例变量进行操作时,可能会出现值被更改、值不同步的情况,进而影响程序的执行流程,这也叫做非线程安全。 3、synchronized既能保证了原子性,又能保证可见性。 4、synchro原创 2021-02-19 17:19:33 · 310 阅读 · 1 评论 -
多线程与高并发(一):线程的基本概念
一、进程和线程 进程:进程是系统进行资源分配和调度的基本单位。例如电脑运行的QQ就是一个进程。 线程:线程是进程中独立运行的子任务,是操作系统能够进行运算调度的最小单位。例如QQ中监听是否收到新消息就是一个线程做的。 二、创建线程的几种方式 1、继承Thread类 2、实现Runnable接口 3、实现Callable接口 三、JAVA中线程的一些方法: 1、start 2、run 3、sleep 4、yield 5、join 6、wait 7、notify、notifyAll原创 2021-02-18 22:20:14 · 109 阅读 · 0 评论