JUC并发知识点

本文深入探讨了Java并发编程,包括JUC(Java并发工具包)的概念,进程与线程的定义,线程的五种状态,wait和sleep方法的区别,以及Lock和Synchronized锁的差异。同时,介绍了使用Condition实现线程间的精准唤醒,以提高并发程序的效率和可控性。

目录

什么是JUC:

什么叫进程?

什么是线程

理解并发和并行

线程 几种状态

wait 和sleep的区别

 

 Lock锁

Lock 和Synchronized 区别

 Condition 实现精准通知


什么是JUC:

JUC是java.util.concurrent包的缩写 JUC指的是Java的并发工具包

就是java.util工具包、包、分类

业务:普通的线程代码 Thread

Runnable 没有返回值 效率相比于 callable 相对较低

Lock锁

什么叫进程?

:一个程序的集合 执行起来就是一个个进程

什么是线程

一个进程包含多个线程 一个进程至少包含一个线程

java默认有几个线程 ? 2个 一个是main线程 一个是 GC线程

java真的能开启线程吗? 无法开启 调用的是本地的方法 底层的C++ Java无法直接操作硬件

理解并发和并行

并发编程的本质:充分利用cpu资源

线程 几种状态

(new )新生 (runnable)运行 ( bocked) 阻塞 (waiting) 等待 (timed_waiting) 超时等待 (terminated) 终止

wait 和sleep的区别

 

 Lock锁

公平锁 可以先来后到

非公平锁 可以插队

Lock 和Synchronized 区别

1.Synchronized 是java的关键字  Lock是Java类

2. S无法判断锁的状态 L可以判断是否获取到锁

3 S会自动释放锁 L需要手动释放锁 不释放会造成死锁

4 S 线程1 阻塞 2就会一直等待 L不一定会等待下去

5 S 可重入锁 不可以中断 是非公平锁 L是 可重入锁 非公平(可以设置)

6 S是少量代码 L适用于大量代码

锁是什么 如何判断锁的是谁 ?

生产者消费者 两个线程不会 四个、多个线程 会造成虚假唤醒

线程可以唤醒 而不会被通知 即虚假唤醒 等待应该出现在循环中 

if判断只会判断一次 唤醒时会造成虚假唤醒

if 改为 while判断

 Condition 实现精准唤醒

为什么要精准唤醒 lockA线程处理完 无法确保是B线程 需要Condition 去实现精准唤醒

 

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值