当前位置: 首页 > 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.jsqmd.com/news/960544/

相关文章:

  • FPGA图像处理实战:用DDR3缓存OV5640摄像头数据,驱动VGA显示器(附完整Verilog代码)
  • 2026最新阆中市贵金属回收权威靠谱TOP5门店排行榜 黄金+铂金+白银+彩金回收及联系方式推荐 - 亦辰小黄鸭
  • 告别Lex/Flex:用500行C++代码实现你自己的词法分析器核心(DFA驱动)
  • 避坑指南:ESP8266用PubSubClient库连OneNet旧版MQTT,这3个错误千万别犯
  • GPT-4稀疏激活原理与MoE工程落地实战
  • LabelMe版本升级踩坑记:从4.5.6到5.0.1,修改标注颜色的代码变了!
  • 兰州黄金回收上门指南 2026年6月金价高位 六家正规门店实地评测 - 余生黄金回收
  • 机器学习模型生产化落地:容器化微服务与MLOps实战指南
  • RAG项目何时需要向量数据库?四维决策线与轻量替代方案
  • 告别软件盗版:用YT88加密狗5分钟搞定C#/Java/Python源代码保护(附完整开发包)
  • 计算机毕业设计之基于微信小程序校园圈互相监督的设计与实现
  • 2026最新诚信优选安丘市黄金回收白银回收铂金回收彩金回收高口碑靠谱门店TOP5权威排行榜+联系方式推荐 - 前途无量YY
  • 新手必看:用UPX脱壳工具搞定攻防世界CTF逆向题(附完整flag获取流程)
  • 深度剖析!照片备份哪家网盘才是真“王者”
  • Android 8.0+ 后台限制下,用JobScheduler实现进程保活的完整代码与避坑指南
  • 使用 systemd 自动执行脚本
  • 四平SEO优化公司|企业网站排名提升,四平搜索引擎优化服务商选择指南 - 招财兔数字员工
  • 从CubeMX配置到RTT线程创建:手把手教你用STM32F4点亮LED并实现命令行控制
  • 匠心精选:推荐一下贵州餐饮定制酒厂 - 品牌推广大师
  • 从地图APP到自动驾驶:聊聊高斯坐标转换在真实项目里的那些事儿
  • 红外遥感场景下专用于车辆/人员等小目标检测的YOLOv5轻量优化版工具包
  • 告别图像撕裂!深入解析FPGA中DDR3缓存OV5640视频流的关键时序与带宽优化
  • 2026最新诚信优选安顺市黄金回收白银回收铂金回收彩金回收高口碑靠谱门店TOP5权威排行榜+联系方式推荐 - 前途无量YY
  • 国内挤出机厂商实测评测:PE造粒机/PP造粒机片材挤出机/PVC板材挤出机/PVC片材挤出机/PVC造粒机/TPO片材挤出机/选择指南 - 优质品牌商家
  • 营销回归模型选型实战:业务对齐优先的决策框架
  • 2025-2026年全球消防泵生产厂家推荐:十大排行产品专业评测高层供水防中断性价比高注意事项 - 品牌推荐
  • 从概念到上线:基于快马平台快速开发trea技术实战应用
  • 别再只调参了!手把手教你用PyTorch实现ArcFace,从公式到代码彻底搞懂margin和scale
  • DSA不是刷题:面向工程约束的数据结构建模系统
  • 从Web应用渗透测试视角,手把手复现CBC模式下的Padding Oracle攻击(附Python3实战脚本)