JavaSE---多线程---扩展
2024-09-02 11:14:30
1、线程的类型
1.1 用户线程
1.2 内核线程
2、java线程
java线程的创建依赖于系统内核,通过JVM调用系统库创建内核线程;
内核线程与java-Thread是1:1的映射关系;
3、线程池
3.1 什么时候使用线程池?
a,单个任务处理的时间比较短;
b,需要处理的任务数量比较大;
4、多线程并发
5、多线程并发产生不安全的原因
stock原来为5;
3个线程(各线程间互不可见)分别从主存中获取stock=5,然后各自执行stock--;
3个线程都执行成功stock=4,库存实际减了3,但各个线程都向主存回写stock=4,导致stock只减了一个;
造成数据不安全;
6、Synchronized实现线程同步
package com.an.lock; public class Test { private static Object object=new Object(); /**
* 库存操作
*/
public void downStock(){
synchronized (object){
//1、从数据库查询库存
//2、执行stock--
//3、执行SQL修改库存
}
}
}
【总结】:
1.1 synchronized底层使用JVM的lock、unlock操作;
1.2 当某一个线程获得对同步监视器的锁定时,其他线程进入阻塞状态;
当某个线程对同步监视器释放锁,其他线程将被唤醒,去争夺锁;
7、Lock实现线程同步
最新文章
- SQL语句查询某表的所有字段及数据类型
- linux shell脚本通过参数名传递参数值
- sizeWithFont方法被弃用了,该怎么办?
- ♫【jQuery插件】图片放大镜
- Laravel Quickstart
- CentOS7上GitLab的使用
- 主成分分析_PCA解释
- 第 10 章 容器监控 - 080 - Weave Scope 容器地图
- python基础之作业1---用户登录
- XSS学习(一)
- SkyWalking-netcore
- MIME 类型
- Java 并发工具包 | J.U.C
- Java中的引用类型Scanner类和随机类型Random
- [javaSE] 看知乎学习反射
- E 定向 牛客练习赛25
- Java日期和时间
- iOS 根据圆心的坐标点、半径、当前手势所在的坐标点,计算出圆的运动轨迹坐标
- HDU 4651 数论 partition 求自然数的拆分数
- OpenGL模型视图变换、投影变换、视口变换的理解