java util concurrent

第一章 多线程与并发基础知识

并发背后的问题:

1.3程序、进程与线程

程序是静态的概念,windows下通常指exe文件。

进程是动态的概念,是程序的运行状态,进程说明程序在内存中的边界。

线程是进程内的一个基本任务,每个线程都有自己的功能,是cpu分配与调度的基本单位。

线程的三大特性:原子性、可见性、有序性

java内存模型:JAVA Memory Model

 

第二章java多线程

2.1创建多线程-继承Thread

创建线程的三种方式:

继承Thread 实现Runnable接口 使用CallableFuture创建线程

2.2创建多线程-实现Runnable接口

 

2.3创建多线程-实现Callable接口

 

2.4Synchronized线程同步机制

 

2.5线程的五种状态

新建 就绪 运行中 阻塞 死亡

 

2.6死锁的产生

多线程对公共资源进行操作时,彼此不释放自己的资源,而去试图操作其他线程的资源,而形成交叉引用,就会产生死锁。

尽量减少公共资源的引用,用完立马释放;

2.7重新认识线程安全ThreadSafe

 

 

第三章JDK并发工具包JUC

3.1java并发工具包与连接池

executors

1.CachedThreadPool可缓存线程池

无限大,如果线程池中没有可用的线程则创建,有空闲的线程则利用起来

2.FixedThreadPool定长线程池

固定线程总数,空间线程用于执行任务,如果线程都在使用后续进入等待状态,在线程池中的线程释放后,再执行后续的任务。

如果任务处于等待的状态,备选的等待算法为LIFO后进先出

3.SingleThreadExcecutor单线程池

4.ScheduledTreadPool调度线程池

线程池优点:

重用存在的线程,减少对象消亡的开销

线程总是可控,提高资源的利用率

避免过多资源竞争,避免阻塞

提供额外功能,定时执行、定期执行、监控等

 

3.2JUCCountDownLatch倒计时锁

适合总分任务。

3.3JUCSemaphore信号量

Semaphore.acquire() semaphore.release() 

 

3.4JUCCyclicBarrier循环屏障

3.5JUCReetrantLook重入锁

任意线程在获取到锁之后,再次获取该锁而不会被该锁阻塞。

3.6JUCCondition线程等待与唤醒

核心方法:

await()阻塞当前线程,直到signal唤醒

signal()唤醒被await的线程,从中断处继续执行

signalAll()唤醒所有被await()阻塞的线程

3.7JUCCallable_Future

Callable有返回值并且可以抛出异常

Future是一个接口,它用于表示异步计算的结果。提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。

3.8JUC之同步容器

3.9JUCAtomicCAS算法

原子性:是指一个操作或者多个操作要么全部执行,且执行过程中不会被任何因素打断,要么都不执行。

3.10课程总结

posted on   zhaoshuzhan  阅读(134)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2016-06-30 oracle第二天

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示