JUC学习记录

本文深入探讨了Java并发编程中的重要工具包JUC,包括进程和线程的概念,线程状态转换,以及Lock接口。特别地,文章详细解释了synchronized关键字的工作原理,通过一系列比喻帮助读者理解其锁机制。此外,还分析了并发与并行的区别,并给出了多线程编程模板和同步方法的实现步骤。
摘要由CSDN通过智能技术生成

1.JUC是什么

java.util.concurrent在并发编程中使用的工具类

进程/线程回顾

1)进程:在操作系统中既是基本的分配单元,也是基本的执行单元

2)线程:一个进程至少包含一个或者以上的线程,是进程中独立运行

目录

1.JUC是什么

进程/线程回顾

2.Lock接口


和独立调度的基本单位

例子:Word文档编辑是一个进程,在编辑过程中会有语法检测拼写,这就是语法检测线程

3)线程状态
NEW                         创建一个线程,但是还未启动
RUNNABLE              在JVM中的可运行状态
BLOCKED                阻塞
WAITING                   无限等待
TIMED_WAITING      有限等待
TERMINATED            结束

4)sleep和wait的区别

wait是object的方法、sleep是thread的方法

wait释放锁,sleep不释放锁

5)并发/并行

并发:同一时刻,多个线程访问同一个资源,例如:春运抢票,秒杀商品

并行:多项工作一起执行,之后汇总,例如:泡方便面

2.Lock接口

1)多线程编程模板:线程  操作  资源类

2)实现步骤:创建资源类;资源类里创建同步方法、同步代码块

Synchronized理解:

连环8问,如果能答出来,说明理解透了synchronize

一部iPhone有发短信,发邮件功能(资源类)张三与李四都想要使用这部手机:

1 标准访问,先打印短信还是邮件 
2 停4秒在短信方法内,先打印短信还是邮件 
3 普通的hello方法,是先打短信还是hello 
4 现在有两部手机,先打印短信还是邮件 
5 两个静态同步方法,1部手机,先打印短信还是邮件 
6 两个静态同步方法,2部手机,先打印短信还是邮件 
7 1个静态同步方法,1个普通同步方法,1部手机,先打印短信还是邮件 
8 1个静态同步方法,1个普通同步方法,2部手机,先打印短信还是邮件 

1)张三与李四都想要使用这部手机(相当于两个线程竞争一个资源类),张三想要用手机发短信,李四想要用手机发邮件,那么,此时,如果张三获取到手机(竞争到锁,获取到资源。并锁定),那么李四只能等待(wait)张三发送完短信。

相当于,在一个资源类里的方法加了synchronize,那么这个资源类一次只能有一个线程去获取到被synchronize修饰的方法。

2)如果此时张三竞争到了手机发短信,此时李四依旧可以使用手机上所带的手机壳等其他不是手机自带属性的东西。

相当于,一个资源类里有普通方法,一个synchronize修饰的方法,此时另一个线程调用该资源类的普通方法不会受影响。

3)如果此时有两部手机,发短信,发邮件分别再两部手机上,此时,张三,李四分别使用两部手机互不影响。

相当于,一个资源类,有两个实例,那么这两个实例的synchronize修饰的方法,不会受影响。

4)极端情况,如果资源类中是静态(static)synchronize修饰的方法,此时,相当于,手机设计时就设定了一个属性,并且不能被更改。

相当于,iPhone手机,设定一个功能,只能先发短信(static synchronize method)之后,才能发邮件(static synchronize method)

5)极端情况2,如果资源类中有一个静态(static)synchronize修饰的方法(相当于类级别) + 一个普通synchronize方法(相当于实例级别)。

相当于,手机设计图,有一个方法(static synchronize),手机制造商根据这个设计图,制造出手机(实例),那么张三使用这部手机时,实例中的synchronize修饰的方法与类(class)中的synchronize互不影响。

总结:

synchronize会锁住实例对象中的所有同步(synchronize修饰)方法,锁颗粒度不够细,不能够灵活控制锁资源的位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值