JUC并发知识点

目录

什么是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 去实现精准唤醒

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值