初识线程:带你理解程序运行的基本流程
一、基本概念开发程序是为了解决问题1.程序一个存在磁盘中的程序一份文件 代码文件数据文件不能解决问题2.进程正在运行中的程序 代码和数据 都在内存中可以解决问题通过代码-计算机指令调度计算机资源CPU缓存、RAM磁盘、IOSystem IO操作系统来解决问题当一个计算机需要同时运行多个进程时需要操作系统来帮忙当一个程序需要同时进行多个任务时需要使用线程操作系统分配资源的最小单元3.线程一个进程的组成部分任何一个进程都至少有一个线程进程也需要操作系统帮忙管理线程CPU分配执行任务的最小单元 就是线程进程使用多线程的优势是可以共享数据二、线程1.Java中实现线程的方式1继承父类Thread继承public class MyThread extends Thread{ }重写方法run public void run( ){ }将需要独立放在线程中执行的代码写在run方法中启动线程使用MyThread类 创建对象并且调用start方法不可调用runeg.创建继承 Thread 的类/** * 继承 Thread 类的自定义线程类 */ public class MyThread extends Thread { private String threadName; // 构造方法可以传入线程名称 public MyThread(String name) { this.threadName name; } /** * 重写 run 方法包含线程要执行的代码 * 注意run() 方法是线程的入口点 */ Override public void run() { System.out.println(threadName 线程开始执行...); try { // 模拟耗时操作 for (int i 1; i 5; i) { System.out.println(threadName - 执行第 i 次任务); // 休眠1秒模拟任务执行时间 Thread.sleep(1000); // 可以调用其他方法 doSomething(i); } } catch (InterruptedException e) { System.out.println(threadName 被中断); } System.out.println(threadName 线程执行完毕); } /** * 线程中可以执行的其他方法 */ private void doSomething(int count) { System.out.println(threadName - 正在处理第 count 个数据); } }使用 MyThread 创建线程并启动/** * 主类演示如何使用 MyThread 创建和启动线程 */ public class ThreadExample { public static void main(String[] args) { System.out.println(主线程开始执行...); // 示例1: 创建单个线程 System.out.println( 示例1: 创建单个线程 ); // 第一步: 创建 MyThread 对象 MyThread thread1 new MyThread(线程A); // 第二步: 调用 start() 方法启动线程 thread1.start(); // 注意不要调用 run() 方法 // 验证直接调用 run() 和调用 start() 的区别 System.out.println(\n 测试直接调用 run() 方法 ); MyThread testThread new MyThread(测试线程); // 直接调用 run() 方法错误示例 System.out.println(直接调用 run() 方法:); testThread.run(); // 这会在当前线程主线程中执行不会创建新线程 System.out.println(\n 测试调用 start() 方法 ); MyThread testThread2 new MyThread(正确线程); testThread2.start(); // 正确会在新线程中执行 // 主线程继续执行其他任务 for (int i 0; i 3; i) { System.out.println(主线程执行任务: i); try { Thread.sleep(800); // 主线程休眠 } catch (InterruptedException e) { e.printStackTrace(); } } // 示例2: 创建多个线程 System.out.println(\n 示例2: 创建多个线程 ); MyThread thread2 new MyThread(线程B); MyThread thread3 new MyThread(线程C); // 启动多个线程 thread2.start(); thread3.start(); // 等待所有线程执行完毕 try { thread1.join(); // 等待线程1结束 thread2.join(); // 等待线程2结束 thread3.join(); // 等待线程3结束 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(所有线程执行完毕主线程结束); } }2实现接口Runnable实现接口public class MyRun implements Runnable{ }重写run方法实现线程中的代码使用MyRun创建一个对象将这个对象放在一个Thread类对象的构造方法中使用Thread对象start方法eg.创建实现 Runnable 接口的类/** * 实现 Runnable 接口的类 */ public class MyRun implements Runnable { private String threadName; // 构造方法可以传入线程名称 public MyRun(String name) { this.threadName name; } /** * 重写 run 方法包含线程要执行的代码 */ Override public void run() { try { for (int i 1; i 5; i) { // 模拟耗时操作 Thread.sleep(1000); // 休眠1秒 // 打印当前线程信息 System.out.println(threadName - 正在执行: i); // 可以在run方法中调用其他方法 doSomething(i); } } catch (InterruptedException e) { System.out.println(threadName 被中断); } System.out.println(threadName 执行完毕); } /** * 线程中可以执行的其他方法 */ private void doSomething(int count) { System.out.println(threadName - 执行第 count 次操作); } }使用 MyRun 创建线程并启动/** * 主类演示如何使用 MyRun 创建和启动线程 */ public class ThreadExample { public static void main(String[] args) { System.out.println(主线程开始执行...); // 示例1: 创建单个线程 System.out.println( 示例1: 创建单个线程 ); // 第一步: 创建 MyRun 对象实现了Runnable接口 MyRun myRun1 new MyRun(线程A); // 第二步: 将 MyRun 对象作为参数创建 Thread 对象 Thread thread1 new Thread(myRun1); // 第三步: 调用 Thread 对象的 start() 方法启动线程 thread1.start(); // 主线程继续执行其他任务 for (int i 0; i 3; i) { System.out.println(主线程执行任务: i); try { Thread.sleep(800); // 主线程休眠 } catch (InterruptedException e) { e.printStackTrace(); } } // 示例2: 创建多个线程 System.out.println(\n 示例2: 创建多个线程 ); MyRun myRun2 new MyRun(线程B); MyRun myRun3 new MyRun(线程C); Thread thread2 new Thread(myRun2); Thread thread3 new Thread(myRun3); // 启动多个线程 thread2.start(); thread3.start(); // 等待所有线程执行完毕 try { thread1.join(); // 等待线程1结束 thread2.join(); // 等待线程2结束 thread3.join(); // 等待线程3结束 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(所有线程执行完毕主线程结束); } }3实现Callable接口最新复杂目前所学知识无法实现后续学到会补充tips.同一个thread对象不可调用多次start函数同一个线程在一个生命周期内创建-运行-销毁只能启动一次但同一个runnable接口类可以同时被多个thread运行2.继承父类和实现接口两种创建线程的方式区别1继承机制继承 Thread 类// 继承 Thread 类 public class MyThread extends Thread { Override public void run() { // 线程代码 } } // 使用 MyThread thread new MyThread(); thread.start();实现 Runnable 接口// 实现 Runnable 接口 public class MyRunnable implements Runnable { Override public void run() { // 线程代码 } } // 使用 MyRunnable runnable new MyRunnable(); Thread thread new Thread(runnable); thread.start();2核心区别对比表对比点继承 Thread 类实现 Runnable 接口继承限制占用继承位置Java单继承不占用继承位置可以继承其他类代码结构线程和任务耦合在一起线程和任务分离更清晰资源共享相对复杂方便共享资源同一个Runnable对象扩展性较差更好更灵活面向对象不符合组合优于继承原则符合面向对象设计原则3实际开发中的选择标准选择继承 Thread 类的情况需要重写 Thread 类的其他方法如 interrupt()简单的单线程任务不需要共享资源学习或演示目的选择实现 Runnable 接口的情况需要继承其他类Java单继承限制需要多个线程共享资源使用线程池管理线程代码需要更好的可扩展性大多数实际项目场景在绝大多数情况下应该优先使用实现 Runnable 接口的方式创建线程。只有在需要重写 Thread 类的特定方法时才考虑继承 Thread 类。

相关新闻

Java应用实例:简易背单词程序(更新)

Java应用实例:简易背单词程序(更新)

一、预期实现功能 V1.0: 准备数据: 找到 单词与翻译的对照数据 存入到文件中 在程序中读取文件中的数据V2.0: 1: 随机抽取单词,去掉其中某个字母,要求用户输入这个字母填空 2:给出中文翻译,输入单词 实现拼…

2026/7/7 1:37:42 阅读更多 →
后端开发效率翻倍:IntelliJ IDEA的5个“神级插件

后端开发效率翻倍:IntelliJ IDEA的5个“神级插件

一、GitToolBox:Git协作效率加速器功能概述:增强IDEA原生Git功能,将版本控制操作无缝集成到IDE中,避免频繁切换命令行。 核心作用:实时Blame信息:点击代码行右侧显示最近修改者、提交时间和摘要&#xff0c…

2026/7/5 9:43:16 阅读更多 →
Photoshop CS6 精简绿色版Photoshop CS6 精简绿色版分享

Photoshop CS6 精简绿色版Photoshop CS6 精简绿色版分享

下载链接Photoshop CS6 精简绿色版 链接:https://pan.quark.cn/s/35e0b2cbe809 4:/^tX0KdDR5jR^%第二步:双击exe文件打开即可\n三:软件介绍\n\n\n原版安装复杂、占满 C 盘,新版要求高配置带不动?今天给大家安排一款「…

2026/7/6 1:10:25 阅读更多 →

最新新闻

基于ComfyUI的AI漫剧制作:8G显存下的零人工干预方案

基于ComfyUI的AI漫剧制作:8G显存下的零人工干预方案

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 最近在B站刷到不少AI生成的漫画剧视频,从角色设计到分镜再到视频合成,全程自动化,效果相当惊艳。但…

2026/7/7 12:09:27 阅读更多 →
上行与下行带宽区别

上行与下行带宽区别

很多朋友在测速时,都会看到两个数字:下载速度和上传速度。有时候,下载速度可以达到900Mbps,而上传速度却只有100Mbps左右;还有些企业申请专线时,运营商会特别说明“上下行对等带宽”。不少人虽然每天都在用…

2026/7/7 12:07:17 阅读更多 →
高压隔离技术:ISOM8710与STM32L4A6RG的安全设计实践

高压隔离技术:ISOM8710与STM32L4A6RG的安全设计实践

1. 高压安全隔离技术概述在工业自动化、医疗设备和电力电子等领域,高压电路与低压控制系统的安全隔离是确保人员和设备安全的关键需求。ISOM8710作为一款高性能数字隔离器,配合STM32L4A6RG低功耗微控制器,能够构建可靠的高压隔离解决方案。典…

2026/7/7 12:07:17 阅读更多 →
听歌不想只发截图?用MusicCard把喜欢的歌做成专属音乐海报

听歌不想只发截图?用MusicCard把喜欢的歌做成专属音乐海报

文章目录1.在极空间一键部署Music Card1.1ssh远程连接到极空间1.2安装docker1.3安装Music Card2.安装cpolar实现随时随地开发3.配置公网地址4.保留固定公网地址总结有些歌适合单曲循环,也适合被认真分享。只是很多时候,我们想表达的不只是“我在听这首歌…

2026/7/7 12:03:16 阅读更多 →
网盘直链下载助手完整指南:告别限速,一键获取真实下载链接

网盘直链下载助手完整指南:告别限速,一键获取真实下载链接

网盘直链下载助手完整指南:告别限速,一键获取真实下载链接 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国…

2026/7/7 11:57:12 阅读更多 →
如何免费解锁WeMod专业版:3个关键步骤与安全指南

如何免费解锁WeMod专业版:3个关键步骤与安全指南

如何免费解锁WeMod专业版:3个关键步骤与安全指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为WeMod专业版的高昂订阅费而烦恼吗&am…

2026/7/7 11:55:12 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻