JUC之线程和进程

什么是JUC:java.util.concurrent+java.util.concurrent.atomic+java.util.concurrent.locks

进程:是程序运行和资源分配的基本单位

线程是CPU调度和分派的 能够独立运行的基本单位

一个进程往往可以包含多个线程,至少包含一个,Java默认有2个线程:main+GC

java真的可以开启线程吗?不可以:

调用的本地方法,底层为c++,Java无法直接操作硬件。

并发:多个任务交替使用同一个cpu核心,宏观上看起来一起再跑,微观上同一时刻只有一个任务在执行,依靠cpu快速切换任务(时间片轮转)实现。

并行:多个任务在多个cpu核心上,真正同一时刻一起执行。多核cpu才能做到。

线程的几种状态:NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMINATED

wait/sleep的区别:

1.来自不同的类,wait来自Object,sleep来自Thread

2.关于锁的释放,wait会释放锁,sleep不会

3,使用范围不同,wait必须在同步代码快中,sleep无限制

4,关于捕获异常,wait不需要,sleep需要捕获异常

相关推荐
西凉的悲伤9 分钟前
Spring Boot 条件装配注解详解
java·springboot·1024程序员节·条件装配
木井巳22 分钟前
【动态规划: 路径问题】不同路径
java·算法·leetcode·动态规划
打工仔折腾 AI26 分钟前
AI Agent 工程化实战(二):5 分钟跑通 Deep Agent 并逐层拆解底层链路
java·数据库·人工智能·后端·python·langchain·ai agent 实战
秋名RG31 分钟前
(二)存储、CPU 与指令执行——程序为什么快,又为什么慢
java·开发语言
BeiGuTing_code38 分钟前
Java泛型与Object
java·开发语言
惊讶的猫40 分钟前
Tika文档解析
java
HEJOO944 分钟前
Java 类加载过程详解:从加载到初始化的完整链路
java·开发语言·firefox
科学熊1 小时前
Java 分布式理论与高并发编程
java·开发语言·分布式
砚底藏山河1 小时前
python量化实操:回测数据缓存与重放
java·python·金融·1024程序员节
学长毕设1 小时前
基于springboot的农资管理系统-附源码
java·spring boot·后端