JUC概述

JUC简介

JUCJDKjava.util.concurrent工具包的简称,这是一个处理线程的工具包,其目的是为了更好的支持高并发任务。(JDK1.5开始出现的)
在这里插入图片描述

进程、线程和管程

进程

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在面向线程设计的计算机结构中,进程是线程的容器程序是指令、数据及其组织形式的描述,进程是程序的实体。
狭义定义: 进程是正在运行的程序的实例。
广义定义: 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它是操作系统执行的基本单元,在传统的操作系统中,进程即是基本的分配单元,也是基本的执行单元。

总体来说,进程是指系统中正在运行的一个应用程序,是计算机中资源分配的最小单位。

线程

线程(Thread)是操作系统能够进行运算调度的最小单位。它存活于进程中,是进程中实际运作单位。一条线程指的是进程中一个单一顺序的控制流。一个进程中可以并发执行多个线程,每个线程执行不同的任务。

总体来说,线程是系统分配处理器时间资源的基本单元,或者说进程内独立执行的一个单元执行流。是程序执行的最小单位。

管程

管程是一种程序结构,又称为监视器。结构内的多个子程序形成的工作线程互斥访问的共享资源。它提供了一种机制,线程可以临时放弃互斥访问,等待条件满足时才重新获取执行权。
JVM中同步是基于进入和退出**管程对象(Monitor)**实现的,每个对象都会有一个管程对象,管程会随着Java对象一同创建和销毁。
线程执行首先要持有管程对象,然后才能执行方法,当方法完成后会释放管程,方法在执行时会持有管程,其他线程无法再获取同一个管程。

并发和并行

在了解并发和并行前,先了解什么事串行

串行

串行:即表示所有任务按照先后顺序依次进行。串行每次只能取并且处理一个任务。
例如:在火车站窗口买票,只有等待前面的人买到票处理完了之后,才会处理后面一个人,即按照先后顺序处理买票。

并发

并发:多个程序可以同时运行的现象,即计算机同时运行多条指令。并发描述的是多进程同时运行的现象,重点在于它是一种现象。这里的“同时运行”表示的不是真的同一时刻有多个线程同时运行的现象,而是看起来多个线程同时运行。单核CPU任意时刻只能运行一个线程。
并发是同一时刻多个线程访问同一个资源

并行

并行:指同时获得多个任务,并同时去执行所取得的这些任务(在同一个时间段内,多个程序同时执行)。并行的效率从代码层次上强依赖于多进程/多线程,从硬件角度上则依赖于多核CPU。
并行模式相当于将长长的一个队列,划分为多个短队列,所以并行缩短了任务对列的长度。
并行是多项任务同时执行

用户线程和守护线程

用户线程

用户线程:指不需要内核支持而在程序中实现的线程,其不依赖于操作系统的核心,应用程序利用线程提供创建、同步、调度和管理线程的函数来控制。

守护线程

守护线程:指程序运行的时候在后台提供的一种通用服务的线程,用来服务用户线程。例如垃圾回收。

注意:

  1. 当主线程结束后,用户线程还在运行,JVM存活。
  2. 若没有用户线程,只有守护线程,JVM结束
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值