1、什么是juc

article/2025/9/19 18:19:16

1、juc简介

在java中,线程部分是重点,juc就是java.util.concurrent工具包的简称。这是一个处理线程的工具包,从jdk1.5开始出现

 2、进程与线程

进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程是资源分配的最小单位

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

3、线程的状态

3.1 线程状态枚举类

Thread.State

public enum State {NEW,//新建RUNNABLE,//可执行,准备就绪BLOCKED,//阻塞WAITING,//无条件等待,直到执行TIMED_WAITING,//根据设定时间等待,超过时间就放弃执行TERMINATED;//终结}

3.2 wait/sleep的区别

  1. sleep是Thread的静态方法,wait是Object的方法,任何对象实例都可以调用
  2. sleep不会释放锁,它也不需要占用锁。wait会释放锁,但调用它的前提是当前线程占有锁(即代码要在synchronized中)
  3. 他们都可以被interrupted()方法中断(线程中断方法)

4、并发与并行

并发: 同一时刻多个线程在访问同一个资源,多个线程对一个点
        例子:春运抢票 电商秒杀...
并行: 多项工作一起执行,之后再汇总
        例子:泡方便面,电水壶烧水,一边撕调料倒入桶中

5、管程(也就是锁)

管程 (monitor) 是保证了同一时刻只有一个进程在管程内活动 , 即管程内定义的操作在同
一时刻只被一个进程调用 ( 由编译器实现 ). 但是这样并不能保证进程以设计的顺序执行
JVM 中同步是基于进入和退出管程 (monitor) 对象实现的,每个对象都会有一个管程
(monitor) 对象,管程 (monitor) 会随着 java 对象一同创建和销毁
执行线程首先要持有管程对象,然后才能执行方法,当方法完成之后会释放管程,方
法在执行时候会持有管程,其他线程无法再获取同一个管程

6、用户线程与守护线程

用户线程 : 平时用到的普通线程 , 自定义线程
守护线程 : 运行在后台 , 是一种特殊的线程 , 比如垃圾回收
当主线程结束后 , 用户线程还在运行 ,JVM 存活
如果没有用户线程 , 都是守护线程 ,JVM 结束

http://chatgpt.dhexx.cn/article/7Xt0GTVk.shtml

相关文章

JUC系列(六) 线程池

📣 📣 📣 📢📢📢 ☀️☀️你好啊!小伙伴,我是小冷。是一个兴趣驱动自学练习两年半的的Java工程师。 📒 一位十分喜欢将知识分享出来的Java博主⭐️⭐️⭐️,擅…

JUC系列(五)

1、ThreadLocal 1.1、什么是ThreadLocal 线程局部变量。 1.2、ThreadLocal的作用以及可以为什么保证线程安全? 多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一…

JUC系列(二)

1、聊一聊Java“锁” 1.1、乐观锁和悲观锁 悲观锁:认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。synchronized关键字和Lock的实现类都是悲观锁。适合写操作多的场景&#…

JUC概述

JUC是什么? JUC就是java.util.concurrent,java.util.concurrent.atomic和java.util.concurrent.locks三个工具类包,它们是处理线程的工具包,最开始出现是从JDK 1.5开始出现。(JUC就是java.util.concurrent工具类的首字母&#xf…

JUC系列一:什么是JUC

前言:笔记整理参考尚硅谷周阳老师在B站上的JUC教程,万分感谢周阳老师。有兴趣的朋友可以在B站搜索周阳老师的视频教程,绝对让你受益匪浅,期望未来也能成为像周阳老师那样的人O(∩_∩)O哈哈~。 JUC B站视频地址 https://www.bilib…

01_JUC概述

1. JUC是什么? 在 Java 5.0 提供了 java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常用的工具类。此包包括了几个小的、已标准化的可扩展框架,并提供一些功能实用的类,没有这些类,一些功能会很难实现或…

JUC系列(三)

1、Java内存模型 1.1、什么是Java内存模型JMM? JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念并不真实存在,它仅仅描述的是一组约定或规范,通过这组规范定义了程序中(尤其是多线程)各个变量(包括…

JUC系列——基础知识 day1-1

JUC系列——基础知识 day1-1 JUC基础知识进程线程进程和线程区别并行与并发同步使用场景 异步使用情景 QuickStart(new Thread方式创建新线程)匿名内部类方式lambda简化 Thread类(仅分析功能)优先级常量方法(常用&…

JUC系列(六)

1、AbstractQueuedSynchronizer之AQS AbstractQueuedSynchronizer简称为AQS,抽象的队列同步器 AQS:是用来构建锁或者其它同步器组件的重量级基础框架及整个JUC体系的基石,使用一个int类变量表示持有锁的状态,通过内置的FIFO队列…

JUC系列(一)

1、为什么多线程极其重要? ​ 多线程变得极其重要的原因从软硬件两个方面来说,首先硬件方面:主要是摩尔定律失效,它是由英特尔创始人之一Gordon Moore(戈登摩尔)提出来的,其内容是当价格不变时,将每隔18个月&#xff…

JUC系列(一)什么是JUC?

多线程一直Java开发中的难点,也是面试中的常客,趁着还有时间,打算巩固一下JUC方面知识,我想机会随处可见,但始终都是留给有准备的人的,希望我们都能加油!!! 沉下去&#…

JUC系列——JUC入门及多线程并发

文章目录 前言一、JUC简介1、出自哪位大神之手?2、JUC是什么? 二、JUC主要解决什么问题?1、进程 、线程2、并发、并行3、JAVA创建线程的方式(模拟三种线程实现方式)1)继承Thread类(线程的初级用…

Java进阶|JUC系列(持续更新)

文章目录 1、什么是J.U.C2、进程、线程、协程2.1 简介2.2 线程有几个状态2.3 wait和sleep的区别 3、Lock锁(重点)3.1 简介3.2 lock锁和synchronized有什么区别 4、生产者和消费者问题4.1 简介4.2 使用synchronized实现的demo4.3使用Lock实现的demo 5、锁的是谁问题1、两个线程访…

莱布尼茨公式C语言编程,高等数学——手撕牛顿莱布尼茨公式

本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是高等数学专题的第13篇文章,我们来看看定积分究竟应该怎么计算。 定积分的实际意义 通过之前的文章,我们基本上熟悉了定积分这个概念和它的一些简单性质&#x…

[计算机数值分析]牛顿插值公式

Spring-_-Bear 的 CSDN 博客导航 埃特金算法虽然具有承袭性,但其算式是递推型的,不便于进行理论上的分析。所以采用具有承袭性的显式的牛顿插值公式是不错的选择。 p n ( x ) f ( x 0 ) f ( x 0 , x 1 ) ( x − x 0 ) . . . f ( x 0 , x 1 , . . . …

如何用计算机做牛顿迭代公式,牛顿迭代法

牛顿迭代法(Newtons method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。 中文名 牛顿迭代法 外文名 Newtons method别 名 牛顿-拉夫逊(拉弗森)方法 提出时间 17世纪 牛顿迭代法产生背景 编辑…

牛顿恒等式 牛顿和

前言:仅个人小记。该恒等式推导逻辑非常简洁。目标:求一个多项式的所有根的次幂和。比如多项式 P ( x ) Σ i 0 n a i x i P(x)\Sigma_{i0}^{n}a_i x^i P(x)Σi0n​ai​xi的根为 α , β , . . . , ω \alpha,\beta,...,\omega α,β,...,ω&#xff…

牛顿插值公式

均差(差商) f[x0,x1]f(x1)−f(x0)x1−x0 一阶 f[x0,x1,x2]f(x1,x2)−f(x0,x1)x2−x0 二阶 ⋮ 性质 1.对上述二解均差展开,得, f[x0,x1,x2]f(x0)(x0−x1)(x0−x2)f(x1)(x1−x0)(x1−x2)f(x2)(x2−x0)(x2−x1) 依次类推 有&am…

5.3 牛顿-科茨公式

学习目标: 理解微积分基础知识,例如导数和微分的概念。学习牛顿-科茨公式的推导过程。这个公式实际上是使用泰勒公式对被积函数进行展开,并使用微积分的基本原理进行简化得到的。学习如何使用牛顿-科茨公式进行数值积分。这通常涉及到将被积…