当前位置:网站首页>JUC (1) threads and processes, concurrency and parallelism, thread state, locks, producers and consumers
JUC (1) threads and processes, concurrency and parallelism, thread state, locks, producers and consumers
2022-08-04 10:31:00 【51CTO】

1、线程和进程
- 进程:一个程序,微信、qq、、、程序的集合.(一个进程包含多个线程,至少包含一个线程.java默认有两个线程:主线程(main)、垃圾回收线程(GC)
- 线程:runnable、thread 、callable
java开不了线程,在源码中可以看出,调用的是底层的方法

2、并发和并行
- 并发:交替
- 并行:同时(同一个时间)
并发编程的本质:充分利用cpu的资源
3、线程的状态
看源码
- 新生
- 运行
- 阻塞
- 等待,(死死的等)
- 超时等待
- 终止
4、sleep和wait的区别
- sleep来自thread.wait来自object
- wait会释放锁,sleep不会释放锁
- wait只能在同步代码块中,sleep可以在任意地方睡
5、Lock锁
Lock接口

public interface Lock
Lock实现提供比使用synchronized方法和语句可以获得的更广泛的锁定操作. 它们允许更灵活的结构化,可能具有完全不同的属性,并且可以支持多个相关联的对象Condition .
锁是用于通过多个线程控制对共享资源的访问的工具. 通常,锁提供对共享资源的独占访问:一次只能有一个线程可以获取锁,并且对共享资源的所有访问都要求首先获取锁. 但是,一些锁可能允许并发访问共享资源,如ReadWriteLock的读锁.
使用synchronized方法或语句提供对与每个对象相关联的隐式监视器锁的访问,但是强制所有锁获取和释放以块结构的方式发生:当获取多个锁时,它们必须以相反的顺序被释放,并且所有的锁都必须被释放在与它们相同的词汇范围内.
虽然synchronized方法和语句的范围机制使得使用监视器锁更容易编程,并且有助于避免涉及锁的许多常见编程错误,但是有时您需要以更灵活的方式处理锁. 例如,用于遍历并发访问的数据结构的一些算法需要使用“手动”或“链锁定”:您获取节点A的锁定,然后获取节点B,然后释放A并获取C,然后释放B并获得D等. 所述的实施方式中Lock接口通过允许获得并在不同的范围释放的锁,并允许获得并以任何顺序释放多个锁使得能够使用这样的技术.

synchronized和lock的区别
- 1、synchronized内置的java关键字,lock是一个java类
- 2、synchronized 无法判断获取锁的状态,lock锁可以判断是否获取到了锁
- 3、synchronized会自动释放锁,lock必须要手动释放锁,如果不释放锁,死锁
- 4、synchronized 线程1获得锁,阻塞,线程2 傻傻的等.lock锁就不一定会等下去;会试图获取锁
- 5、synchronized 可重入锁,不可以中断,非公平:lock,可重入锁可以判断锁,非公平
- 6、synchronized 适合锁少量的代码同步问题,lock适合锁大量的同步代码

6、买票问题
7、生产者和消费者问题



8、使用condition替换synchronized


修改后的代码
测试结果

边栏推荐
猜你喜欢
随机推荐
《迁移学习导论》第2版,升级内容抢先看!
The difference between Mysql application log time and system time is eight hours
利用pytest hook函数实现自动化测试结果推送企业微信
JDBC知识点
【c】操作符详解(二)
再次搞定 Ali 云函数计算 FC
一文带你了解 ESLint
LVS负载均衡群集
云计算适合什么企业_当前全球云计算处于发展
开源一夏|ArkUI如何自定义弹窗(eTS)
Business collocations
Camunda整体架构和相关概念
数据使用要谨慎——不良数据带来严重后果
在 .NET MAUI 中如何更好地自定义控件
HTB-Sense
暴力破解-破解 Apache BASIC 认证
C语言*小白的探险历程
开源一夏|ArkUI如何自定义弹窗(eTS)
罗克韦尔AB PLC RSLogix5000中定时器指令使用方法介绍
iMeta | Baidu certification is completed, search "iMeta" directly to the publisher's homepage and submission link









