news 2026/6/19 19:55:38

Java 多线程学习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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(); // 是否存活
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 17:22:18

23 级山东大学软件学院创新实训 - 个人纪录(五)

LinguaSpark 单词复习算法的缺陷发现与改进实践在 LinguaSpark 智能外语学习平台上线运行后&#xff0c;我通过日志监控与数据分析&#xff0c;发现了单词背诵模块中 SM-2 间隔重复算法存在的严重缺陷——用户可以通过高频刷同一个单词&#xff0c;使间隔天数指数膨胀至数百天&…

作者头像 李华
网站建设 2026/6/13 16:37:37

Dev-C++一键运行的C语言进销存控制台程序(含源码+exe+工程文件)

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;直接在Windows下用Dev-C打开就能编译运行的商品进销存管理程序&#xff0c;纯C语言编写&#xff0c;不依赖任何外部库。启动后通过数字菜单操作&#xff1a;录入进货或销售记录&#xff08;自动同步更新库存和销…

作者头像 李华
网站建设 2026/6/14 3:39:43

099、YOLO + LLM/VLM 多模态探索:检测结果用大模型做语义理解和描述

099、YOLO + LLM/VLM 多模态探索:检测结果用大模型做语义理解和描述 一、从一次离谱的误检说起 上个月做智慧零售项目,摄像头对着货架,YOLOv8检测到一瓶“可乐”——置信度0.92,框得贼准。但客户反馈说:“你们系统把一瓶零度可乐识别成经典可乐,这会导致库存统计出错。”…

作者头像 李华