Java笔记-多线程高阶
创始人
2024-05-24 23:45:46
0

目录

  • 一、多线程
    • 1.为什么使用多线程:
    • 2.多线程使用场景:
    • 3.使用多线程要考虑的因素:
  • 二、线程间竞争对象锁的过程
  • 三、synchronized关键字
    • 1.synchronized的作用:
    • 2.synchronized执行效率:
    • 3.synchronized实现原理:
    • 4.synchronized的锁机制:
      • CAS的应用:
    • 5.synchronized的优化方案:

一、多线程

1.为什么使用多线程:

(1)安全
(2)效率

2.多线程使用场景:

(1)需要执行比较耗时的操作
(2)需要异步处理的业务(比如阻塞)

3.使用多线程要考虑的因素:

(1)执行的代码任务量
(2)系统资源
(3)执行任务的数量

二、线程间竞争对象锁的过程

三、synchronized关键字

1.synchronized的作用:

通过线程间的同步互斥达到线程安全的三大特性(原子性、可见性、有序性)

2.synchronized执行效率:

(1)如果线程数量越多,性能下降的越快
(2)同步代码执行时间越快。性能相对来说,下降越快

3.synchronized实现原理:

monitor机制:monitorenter、monitorexit,计数器

4.synchronized的锁机制:

(1)乐观锁:

(2)悲观锁:

(3)CAS Compare and Swap,比较并交换(原始值、修改值、预期值、版本号)—属于乐观锁

CAS的应用:

java.util.concurrent.atomic的实现原理就是CAS
举例:

public class CASTest {public static void main(String[] args) {//设定初始值为5AtomicInteger atomicInteger=new AtomicInteger(5);//main线程在工作一段时间后,要将自己的工作内存的值写进主内存//main的期望值是5,如果期望值与atomicInteger的值一样,就更新我指定的值,System.out.println(atomicInteger.compareAndSet(5, 2020) + "值为" + atomicInteger.get());System.out.println(atomicInteger.compareAndSet(2020, 21) + "值是:" + atomicInteger.get());System.out.println(atomicInteger.compareAndSet(2020, 21) + "值是:" + atomicInteger.get());}
}

5.synchronized的优化方案:

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...