JUC并发编程-高级篇

JUC并发编程-高级篇

1. JUC并发编程介绍

  1. JUC是什么
    1. java.util.concurrent并发编程中使用的工具包
    2. JUC就是Java.util.concurrent工具包,实现并发编程

2. 线程基础知识

  1. 线程的重要性
    1. 硬件方面
      1. 由于摩尔定律失效,在主频不再提高且核数不断增加的情况下,要想让程序更快就要用到并发或并行编程
    2. 软件方面
      1. 并发编程面试加分
      2. 充分利用多核处理器,在主频不再变快且核数不断增加时,此时想提高运行效率就要使用并发编程
      3. 提高程序性能,高并发执行
      4. 通过程序吞吐量,异步+回调
    3. 弊端以及问题
      1. 线程安全问题,会出现并发修改问题,且集合类是线程不安全的
      2. 线程死锁问题
      3. 线程性能问题
  2. start一个线程,先调用底层C语言,再调用OS去创建一个线程
    1. start()后才会创建线程执行操作,且底层是调用的OS内核native的方法start0()

    2. native调用的是底层C语言的函数Java语言本身底层就是C++

    3. native是OS内核的C语言方法,且Java底层就是C++

    4. Java的OpenJDK源码就是用C语言实现

    5. 调用start0()就是调用底层C语言的方法来去OS内核中创建线程

    6. Java底层就是使用C++实现,且native函数就是调用调用C++方法去OS中创建线程 ![[attachments/Pasted image 20241127125655.png]]

    7. 调用start后会调用 native start0(),此时是调用thread.c中的方法,去jvm.cpp中调用JVM中的方法,再调用OS提供的方法来创建线程

    8. Java的底层使用C++进行实现,调用start()后先调用C++文件去JVM中配合OS来创建一个操作系统层次的线程

  3. Java多线程相关概念
    1. 1把锁:Synchronized
    2. 2个并:并发Concurrent(同一个时间间隔内交替执行)和并行Parallel(同一时刻同时执行)
      1. 并发是多个任务在同一个实体上交替执行
      2. 并行是多个任务在多个实体上同时执行
    3. 3个程:进程、线程和管程
      1. 进程就是程序的一次执行过程,是资源分配的基本单位线程是CPU调度的基本单位,一个进程中可以有多个线程线程就是轻量级线程
      2. 进程是资源分配的基本单位,就是程序的执行过程线程是轻量级的进程,是CPU调度的基本单位一个进程中可以有多个线程
      3. 一个进程中可以有多个线程
      4. 管程是实现同步的一种机制保证同一时刻只可以有一个进入管程中对共享数据进行操作,在管程内部维护多个共享数据,每次保证只可以一个进入管程访问
      5. 管程Monitor也就是锁,内部存放多个共享数据,确保同一时刻只可以有一个线程来进行访问,从而可以实现同步
      6. 每一个对象都有一个Monitor对象,都可以作为一个锁,会和对象同时销毁,底层通过C++实现
      7. 每个对象都是一个锁,当执行同步方法时就会被占用,即每一个对象只可以同时执行一个同步方法,
      8. 每一个对象都是一个锁,执行同步方法时就会占用该对象的锁每一个对象只可以同时执行一个同步方法,但可以同时执行多个非同步方法
      9. 每一个对象都是一个锁,都有一个管程对象,当执行Synchronized同步方法时,此时会先得到对象的管程,然后再执行方法,此时就无法再获得对象的管程了,故每个对象只可以同时执行一个同步方法
    4. 用户线程和守护线程
      1. 用户线程就是我们自定义创建的线程,可以继承Thread类,或者实现Runnable接口以及用Callable接口创建FutureTask类对象来创建线程**,当主线程结束而用户线程未结束时,JVM不会结束
      2. 守护线程就是运行在后台的线程,当主线程结束时,守护线程也会结束
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值