JUC高并发编程

1. JUC概述

1.1 什么是JUC

JUC时java.util.concurrent工具包的简称。这是一个处理线程的工具包,JDK1.5开始出现的。

1.2 进程和线程的概念

1.2.1 进程与线程

打开一个软件,就开启了一个进程,一个进程会包括很多个线程,线程是操作系统运行的最小资源单位。

  • 打开360软件(开启一个进程)
    • 木马查杀 (线程1)
    • 清理垃圾 (线程2)

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

线程:系统分配处理器时间资源的基本单元。线程是程序执行的最小单位。

CPU是按照线程分配时间片的。在大多数现代操作系统中,调度器是基于线程而不是进程来分配时间片的。

1.2.2 线程的状态

Thread.State:

  • NEW
  • RUNNABLE
  • BLOCKED
  • WAITING
  • TIMED_WAITING
  • TERMINATED

1.2.3 wait和sleep

  • sleep是Thread的静态方法,wait是Object的方法,任何对象实例都能调用
  • sleep不会释放锁,它也不需要占用锁。wait会释放锁,但调用它的前提是当前线程占有锁。
  • 他们都可以被interrupted方法中断

1.2.4 并发和并行

  • 并发:单核CPU
  • 并行:4核CPU

1.2.5 管程

Monitor,监视器。是一种同步机制,保证同一个时间,只有一个线程对被保护的数据或者代码访问。

1.2.6 用户线程和守护线程

  • 用户线程:自定义线程
  • 守护线程:比如垃圾回收

主线程结束了,用户线程还在运行,jvm存活

没有用户线程了,都是守护线程,jvm结束

2. Lock接口

相关推荐
java1234_小锋13 分钟前
Spring IoC的实现机制是什么?
java·后端·spring
生骨大头菜35 分钟前
使用python实现相似图片搜索功能,并接入springcloud
开发语言·python·spring cloud·微服务
绝不收费—免费看不了了联系我37 分钟前
Fastapi的单进程响应问题 和 解决方法
开发语言·后端·python·fastapi
xqqxqxxq1 小时前
背单词软件技术笔记(V2.0扩展版)
java·笔记·python
消失的旧时光-19431 小时前
深入理解 Java 线程池(二):ThreadPoolExecutor 执行流程 + 运行状态 + ctl 原理全解析
java·开发语言
咖啡续命又一天1 小时前
Trae CN IDE 中 Python 开发的具体流程和配置总结
开发语言·ide·python·ai编程
哈哈老师啊1 小时前
Springboot学生综合测评系统hxtne(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·数据库·spring boot
4311媒体网1 小时前
帝国cms调用文章内容 二开基本操作
java·开发语言·php
GSDjisidi1 小时前
东京IT软件会社-(株)GSD|多种技术栈募集,高度人才+20分
开发语言·面试·职场和发展
zwxu_1 小时前
Nginx NIO对比Java NIO
java·nginx·nio