当前位置: 首页 > news >正文

JUC初识

JUC 是什么

java.util.concurrent 在并发编程中使用的工具包

从线程start 开始

package com.jhj.Thread;public class ThreadDemo {public static void main(String[] args) {Thread t1 = new Thread(() -> {}, "t1");t1.start();}
}

start 方法调的是native start0 本地方法 本地方法用C++ 实现。 实际上由jvm 配合操作系统起的
执行 openjdk8\jsk\sec\share\native\java\lang thread.c 与Thread.java 对应
openjdk8\jsk\sec\share\vm\prims jvm.cpp 线程start
openjdk8\jsk\sec\share\vm\runtime thread.cpp 464 行 操作系统start

多线程相关概念

  • 一把锁 synchronized
  • 两个并 并发(concurrenr)与并行(parallel)
    并发是同一实体上的多个事件,是在一台处理器上“同时"处理多个任务,同一时刻,其实是只有一个事件在发生。
    并行是在不同实体上的多个事件,是在多台处理器上同时处理多个任务,同一时刻,大家真的都在做事情,你做你的,我做我的。
    并发vs并行
  • 三个程 进程线程管程
    进程是系统内运行的一个应用程序,每一个进程都有它自己的内存空间和系统资源。每一个进程有很多个线程。
    线程被称为轻量级的进程,在同一个进程内会有一个或者多个线程,是大多数操作系统进行时序调度的基本单元。
    管程 Monitor(监视器) 也就是我们平时说的锁,每一个对象都有minitor对象,底层用c++实现执行线程需要先成功持有管程,谁抢到锁就持有管程,才能执行,执行完成释放管程。相当于锁

用户线程和守护线程

java 线程分为用户线程和守护线程 默认都是用户线程,整个系统默认良好运作,会提供一个守护线程。

  • 用户线程,系统的工作线程,他会完成这个程序需要完成的业务操作。
  • 守护线程,是一种特殊的线程为其他线程服务的,在后台默默地完成一些系统性地服务,比如垃圾回收线程就是最典型地例子。作为一个服务线程,没有服务对象就没有必要继续运行了,如果用户线程全部结束了,意味着程序需要完成的业务操作已经结束了,系统可以退出了,当系统只剩下守护线程时,java 虚拟机会自动退出。

线程Daemon

判断线程是否时守护线程

    /*** Tests if this thread is a daemon thread.** @return  <code>true</code> if this thread is a daemon thread;*          <code>false</code> otherwise.* @see     #setDaemon(boolean)*/public final boolean isDaemon() {return daemon;}
package com.jhj.Thread;import java.util.concurrent.TimeUnit;public class ThreadDemo {public static void main(String[] args) {Thread t1 = new Thread(() -> {System.out.println(Thread.currentThread().getName()+"是守护"+Thread.currentThread().isDaemon());while (true){}}, "t1");t1.start();try {TimeUnit.SECONDS.sleep(3);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("结束");}
}

在这里插入图片描述

默认都是用户线程,两个线程执行

package com.jhj.Thread;import java.util.concurrent.TimeUnit;public class ThreadDemo {public static void main(String[] args) {Thread t1 = new Thread(() -> {System.out.println(Thread.currentThread().getName()+"是守护"+Thread.currentThread().isDaemon());while (true){}}, "t1");t1.setDaemon(true);t1.start();try {TimeUnit.SECONDS.sleep(3);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("结束");}
}

在这里插入图片描述

设置为守护线程后,用户线程结束 守护线程随着关闭,如果用户线程全部结束意味着程序需要完成的业务操作已经结束了,守护线程随着JVM一同结束工作。 t1.setDaemon(true);必须在start 之前设置,否则会发生线程不合法异常

作者声明

如有问题,欢迎指正!

相关文章:

JUC初识

JUC 是什么 java.util.concurrent 在并发编程中使用的工具包 从线程start 开始 package com.jhj.Thread;public class ThreadDemo {public static void main(String[] args) {Thread t1 new Thread(() -> {}, "t1");t1.start();} }start 方法调的是native sta…...

stm32之5.长按按键(使用时钟源)调整跑马灯速度

------------------------------ 源码 #include <stm32f4xx.h> #include "led.h" #include "delay.h" #include "my_str.h" #include "beep.h" #include "key.h" int main(void) { key_init(); Led_init();…...

element ui datePick时间日期一段时间,限制选择日期的范围

想限制只能选日期间隔为一年&#xff0c;联合选择器样式不好改&#xff0c;使用俩单独的 有两个办法限制 1.一个在外层使用form通过表单验证控制&#xff0c;出现错误提示&#xff08;由于是两个单独的组件&#xff0c;触发验证的方式又为单个失去焦点&#xff0c;所以俩组件…...

kubernetes--技术文档-真--集群搭建-三台服务器一主二从(非高可用)-三服务器位于同交换机中

在使用k8s之前如果不太熟悉k8s的可以先看这个文章&#xff1a; kubernetes--技术文档--基本概念--《10分钟快速了解》_一单成的博客-CSDN博客 三节点相同安装操作&#xff1a; 1、设置hosts解析 根据角色在三个服务器中运行&#xff0c;设置自己的hostname。 标识&#xf…...

高性能MySQL实战(三):性能优化

大家好&#xff0c;我是 方圆。这篇主要介绍对慢 SQL 优化的一些手段&#xff0c;而在讲解具体的优化措施之前&#xff0c;我想先对 EXPLAIN 进行介绍&#xff0c;它是我们在分析查询时必要的操作&#xff0c;理解了它输出结果的内容更有利于我们优化 SQL。为了方便大家的阅读&…...

198. 打家劫舍

题目 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个房屋存放…...

Pydev·离线git包

Pydev离线git包 1.下载离线git包&#xff1a;eclipse.egit.repository-4.4.0.201606070830-r.zip 2.将解压后目录&#xff1a;eclipse.egit.repository-4.4.0.201606070830-r\plugins下的jar文件放到 ide\eclipse\plugins目录下 3.重启pydevIDE 百度搜索站长工具&#xff1a;h…...

Vue-12.集成postcss.config.js

PostCSS 介绍 PostCSS 是一个用于处理样式的工具&#xff0c;可以通过插件来定制其行为。以下是一些常用的 PostCSS 插件和 API 的介绍&#xff1a; Autoprefixer: 这是一个流行的 PostCSS 插件&#xff0c;用于自动添加浏览器前缀&#xff0c;以确保您的样式在不同浏览器中具…...

基于前端技术原生HTML、JS、CSS 电子病历编辑器源码

电子病历系统采取结构化与自由式录入的新模式&#xff0c;自由书写&#xff0c;轻松录入。实现病人医疗记录&#xff08;包含有首页、病程记录、检查检验结果、医嘱、手术记录、护理记录等等。&#xff09;的保存、管理、传输和重现&#xff0c;取代手写纸张病历。不仅实现了纸…...

Linux环境下远程访问SVN服务:SVN内网穿透的详细配置与操作指南

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…...

创建k8s operator

目录 1.前提条件 2.进一步准备 2.1.安装golang 2.2.安装code&#xff08;vscode的linux版本&#xff09; 2.3.安装kubebuilder 3.开始创建Operator 3.1.什么是operator? 3.2.GV & GVK & GVR 3.3.创建operator 3.3.1. 生成工程框架 3.3.2.生成api(GVK) …...

python模拟登入某平台+破解验证码

概述 python模拟登录平台&#xff0c;遇见验证码识别&#xff01;用最简单的方法seleniumda破解验证码&#xff0c;来自动登录平台 详细 python用seleniumxpath模拟登录破解验证码 先随便找个小说平台用户登陆 - 书海小说网用户登陆 - 书海小说网用户登陆 - 书海小说网 准…...

【图像分割】理论篇(2)经典图像分割网络基于vgg16的Unet

UNet 是一种用于图像分割任务的深度学习架构&#xff0c;最早由 Olaf Ronneberger、Philipp Fischer 和 Thomas Brox 在2015年的论文 "U-Net: Convolutional Networks for Biomedical Image Segmentation" 中提出。UNet 在医学图像分割等领域取得了显著的成功&#x…...

vue插入重复的html内容

vue添加重复的html内容是通过绑定一个数组来v-for循环实现的。 效果展示&#xff1a; 首先创建数组&#xff0c;里面为重复内容的数量&#xff0c;里面默认存在一个初始值。 然后通过v-for来绑定这个数组&#xff0c;循环数据。 通过添加点击事件&#xff0c;来增加或删除数组…...

计算机网络-物理层(三)-信道的极限容量

计算机网络-物理层(三)-信道的极限容量 当信号在信道中传输失真不严重时&#xff0c;在信道的输出端&#xff0c;这些信号可以被识别 当信号在信道中&#xff0c;传输失真严重时&#xff0c;在信道的输出端就难以识别 造成失真的因素 码元传输速率信号传输距离噪声干扰传输媒…...

Http/Websocket协议的长连接和短连接的错误认识详细解读(史上最通俗)

从一个问题聊起&#xff1a; Http/Websocket 都称为一种协议&#xff0c;能用现实中的例子来解释协议吗&#xff1f; AI 举例&#xff1a; 您&#xff08;客户端&#xff09;&#xff1a; 您坐在餐厅桌子上&#xff0c;想点一份菜单。 服务员&#xff08;服务器&#xff09…...

两两交换链表中的节点

你存在&#xff0c;我深深的脑海里~ 题目&#xff1a; 示例&#xff1a; 思路&#xff1a; 这个题有点类似于反转一个单链表&#xff0c;不同的地方在于这个题不全反转&#xff0c;所以我们不同的地方在于此题多用了一个prve指针保存n1的前一个节点&#xff0c;以及头的改变&a…...

HTTP与RPC的取舍

HTTP与RPC的取舍 HTTP和RPC都是常用的网络通信协议&#xff0c;它们各有优劣。选择何种协议&#xff0c;主要取决于应用的需求和场景。 HTTP和RPC都有各自的优点和缺点&#xff0c;首先我们对两种协议进行一个总结。 HTTP协议图 HTTP的优点&#xff1a; 广泛的支持&#xff1…...

微前端学习(上)

一、课程目标 微前端概念;现有方案利弊;Single-spa实现原理;掌握使用qiankun搭建微应用;二、课程大纲 微前端背景现在web应用面临的问题微前端的价值微前端应用具备哪些能力微前端解决方案有哪些基于qiankun的实践1、微前端背景 2014年: Martin Fowler和James Lewis共同提…...

【Axure视频教程】标签版多选下拉列表

今天教大家在Axure里如何制作标签版多选下拉列表的原型模板&#xff0c;该模板用中继器制作&#xff0c;制作完成后使用也方便&#xff0c;只需要在中继器表格里维护选项信息&#xff0c;即可自动生成交互效果&#xff0c;包括显示隐藏选项列表&#xff0c;选中和取消选中选项&…...

EPLAN新手必看:3分钟搞定自定义工具栏,效率翻倍不是梦

EPLAN高效工作指南&#xff1a;从零开始打造你的专属工具栏 第一次打开EPLAN时&#xff0c;满屏的工具栏按钮是不是让你感到手足无措&#xff1f;作为一名电气设计工程师&#xff0c;我完全理解这种感受。记得我刚接触EPLAN时&#xff0c;常常在密密麻麻的图标中迷失方向&…...

图像标注难题如何破解?LabelImg工具全面解析与实战指南

图像标注难题如何破解&#xff1f;LabelImg工具全面解析与实战指南 【免费下载链接】labelImg LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can check out L…...

软开关电路设计:从原理到实战,打造智能电源管理方案

1. 软开关电路设计基础 第一次接触软开关电路是在一个电池供电的智能门锁项目里。当时产品经理提了个需求&#xff1a;用户按下按键后设备要立即唤醒&#xff0c;但待机功耗必须控制在10μA以下。传统机械开关方案要么漏电流大&#xff0c;要么响应慢&#xff0c;直到我发现软开…...

HunyuanVideo-Foley 效果对比:不同算法模型生成音效的质量评估

HunyuanVideo-Foley 效果对比&#xff1a;不同算法模型生成音效的质量评估 1. 音效生成技术概览 音效生成技术正在经历一场革命性的变革。从早期的采样拼接到如今的AI生成&#xff0c;算法模型已经能够根据简单的文字描述创造出丰富多样的声音效果。这项技术在影视制作、游戏…...

AI技术通过aibiye爱毕业等8款智能应用,显著提升了论文撰写与代码实现的效率,为毕业设计带来创新支持

文章总结表格&#xff08;工具排名对比&#xff09; 工具名称 核心优势 aibiye 精准降AIGC率检测&#xff0c;适配知网/维普等平台 aicheck 专注文本AI痕迹识别&#xff0c;优化人类表达风格 askpaper 快速降AI痕迹&#xff0c;保留学术规范 秒篇 高效处理混AIGC内容&…...

数据救援3大维度全解析:开源工具TestDisk PhotoRec实战指南

数据救援3大维度全解析&#xff1a;开源工具TestDisk & PhotoRec实战指南 【免费下载链接】testdisk TestDisk & PhotoRec 项目地址: https://gitcode.com/gh_mirrors/te/testdisk 硬盘数据恢复是每个技术人员都可能面临的挑战&#xff0c;当遭遇分区损坏、文件…...

CentOS虚拟机启动卡在紧急模式?别慌,手把手教你用xfs_repair修复XFS元数据损坏

CentOS虚拟机启动卡在紧急模式&#xff1f;手把手教你用xfs_repair拯救XFS元数据 当你正准备开始一天的工作&#xff0c;突然发现CentOS虚拟机无法正常启动&#xff0c;屏幕上赫然显示着"emergency mode"的红色警告。这种突如其来的系统崩溃&#xff0c;往往让运维人…...

LaTeX表格排版救星:用tabularx和 esizebox搞定超宽表格(Overleaf实测)

LaTeX表格排版救星&#xff1a;用tabularx和resizebox搞定超宽表格&#xff08;Overleaf实测&#xff09; 在学术写作中&#xff0c;数据表格是展示研究成果的重要方式&#xff0c;但处理多列宽表时常常让人头疼——要么表格溢出页面边界&#xff0c;要么缩放后字体小到难以辨认…...

OpenClaw+GLM-4.7-Flash语音交互:对接Whisper实现语音控制

OpenClawGLM-4.7-Flash语音交互&#xff1a;对接Whisper实现语音控制 1. 为什么需要语音交互的自动化助手&#xff1f; 去年冬天的一个深夜&#xff0c;我裹着毯子在书房调试代码时突然想到&#xff1a;如果能用语音控制电脑执行重复性任务&#xff0c;就不用反复在键盘和鼠标…...

PDE建模技术在油水两相流及离散裂缝模型中的应用:深入探讨Comsol石油工程中的关键概念

comsol石油工程 pde油水两相流 pde油水离散裂缝两相流概念模型附赠视频讲解和推导过程 采用PDE建模当油和水在岩石孔隙里掐架石油工程里最头疼的问题之一就是油水两相流。想象一下&#xff0c;地下的油像挤牙膏一样被水推着走&#xff0c;结果要么水窜得太快把油路截断&#xf…...