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

Java 多线程学习

一、什么是多线程?

  1. 进程:操作系统分配资源的最小单位(比如一个运行的 IDEA、浏览器)。
  2. 线程:进程内的执行单元,CPU 调度的最小单位,一个进程可以包含多个线程。
  3. 多线程:让一个程序同时执行多个任务,提高效率、充分利用 CPU。

核心特点:并发(交替执行)并行(同时执行)共享进程资源


二、线程的创建方式(4 种)

1. 继承 Thread 类

java

运行

class MyThread extends Thread { @Override public void run() { System.out.println("线程执行:" + Thread.currentThread().getName()); } } // 使用 new MyThread().start(); // 必须调用 start(),不是 run()

2. 实现 Runnable 接口(推荐)

java

运行

class MyRunnable implements Runnable { @Override public void run() { System.out.println("线程执行:" + Thread.currentThread().getName()); } } // 使用 new Thread(new MyRunnable()).start();

3. 实现 Callable 接口(带返回值 + 抛异常)

java

运行

class MyCallable implements Callable<Integer> { @Override public Integer call() throws Exception { return 100; } } // 使用 FutureTask<Integer> task = new FutureTask<>(new MyCallable()); new Thread(task).start(); // 获取返回值 Integer res = task.get();

4. 线程池(企业开发唯一推荐)

java

运行

ExecutorService pool = Executors.newFixedThreadPool(3); pool.execute(() -> { System.out.println("线程池执行"); }); pool.shutdown();

三、线程的生命周期(6 种状态)

  1. NEW:新建未启动
  2. RUNNABLE:可运行(正在运行 / 等待 CPU)
  3. BLOCKED:阻塞(等待锁)
  4. WAITING:等待(无时限等待)
  5. TIMED_WAITING:定时等待
  6. TERMINATED:终止

记忆口诀:新、可、阻、等、时等、终


四、线程常用 API

java

运行

Thread.currentThread(); // 获取当前线程 thread.start(); // 启动线程 thread.sleep(1000); // 休眠1秒(不释放锁) thread.join(); // 等待该线程执行完 thread.yield(); // 让出CPU执行权 thread.setName(); // 设置线程名 thread.setPriority(1~10);// 设置优先级 thread.interrupt(); // 中断线程(标记) thread.isAlive(); // 是否存活
http://www.zskr.cn/news/1472218.html

相关文章:

  • 避坑指南:ESP8266用PubSubClient库连OneNet旧版MQTT,这3个错误千万别犯
  • 新手必看:用UPX脱壳工具搞定攻防世界CTF逆向题(附完整flag获取流程)
  • 从地图APP到自动驾驶:聊聊高斯坐标转换在真实项目里的那些事儿
  • 匠心精选:推荐一下贵州餐饮定制酒厂 - 品牌推广大师
  • 四平SEO优化公司|企业网站排名提升,四平搜索引擎优化服务商选择指南 - 招财兔数字员工
  • 红外遥感场景下专用于车辆/人员等小目标检测的YOLOv5轻量优化版工具包
  • 从Web应用渗透测试视角,手把手复现CBC模式下的Padding Oracle攻击(附Python3实战脚本)
  • 2025-2026年全球消防泵生产厂家推荐:十大排行产品专业评测高层供水防中断性价比高注意事项 - 品牌推荐
  • 别再只调参了!手把手教你用PyTorch实现ArcFace,从公式到代码彻底搞懂margin和scale
  • MobaXterm串口传文件太慢?手把手教你用Zmodem插件实现高效文件传输
  • Dev-C++一键运行的C语言进销存控制台程序(含源码+exe+工程文件)
  • MATLAB差影法人体姿态识别工具:站姿/蹲姿/躺姿自动判别+GUI交互界面
  • 有没有做私人高端实木定制的工厂 - 舒雯文化
  • 2026最新诚信优选鞍山市黄金回收白银回收铂金回收彩金回收高口碑靠谱门店TOP5权威排行榜+联系方式推荐 - 前途无量YY
  • 别再手动写Makefile了!用CMake 3.28+ 5分钟搞定C++跨平台项目构建(附完整CMakeLists.txt模板)
  • 基于SpringBoot+Vue的疫情打卡健康评测系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • 普洱余生黄金回收 全国连锁上门服务 普洱六家正规机构实力上榜 - 余生黄金回收
  • Python ctypes实战:手把手教你用VS2022编译DLL并调用(Windows平台)
  • 用Informer搞定你下一个时序预测项目:从ETDataset数据预处理到模型训练完整Pipeline
  • 计算机毕业设计之基于SpringBoot架构的校园闲置物品交易系统的设计与实现
  • 衡水市2026年最新黄金回收白银回收铂金回收门店实测 五家靠谱店铺排行榜及联系方式电话推荐 - 盛世金银回收
  • 离心风机怎么选?工业场景选型关键参数整理
  • 防城港市五家靠谱黄金回收店铺排行榜 2026年最新黄金+白银+铂金+K金回收门店及联系方式电话推荐 - 大熊猫898989
  • 呼和浩特市2026年最新黄金回收白银回收铂金回收门店实测 五家靠谱店铺排行榜及联系方式电话推荐 - 盛世金银回收
  • 荆门市五家靠谱黄金回收店铺排行榜 2026年最新黄金+白银+铂金+K金回收门店及联系方式电话推荐 - 大熊猫898989
  • FPGA高速串行数据采集实战:手把手教你配置Xilinx ISERDESE2的三种模式(SDR/DDR/Expansion)
  • 当MicroBlaze遇到RTL8211FD:手把手调试FPGA千兆网卡驱动与LWIP协议栈
  • 荆州市五家靠谱黄金回收店铺排行榜 2026年最新黄金+白银+铂金+K金回收门店及联系方式电话推荐 - 大熊猫898989
  • TCS3472颜色传感器I2C通信避坑指南:从地址0x29到Arduino代码调试全流程
  • 微信小程序门禁控制源码:指纹远程开门+访客临时授权+操作日志查看