多线程:Thread类基本用法

发布时间:2026/10/22 12:31:09

多线程:Thread类基本用法 多线程编程是现代软件开发中不可或缺的一部分它允许程序同时执行多个任务大大提高应用程序的效率和响应能力。一创建线程的两种方式1. 继承Thread类public class MyThread extends Thread {Overridepublic void run() {// 线程执行的代码for (int i 0; i 5; i) {System.out.println(Thread.currentThread().getName() : i);try {Thread.sleep(500); // 线程休眠500毫秒} catch (InterruptedException e) {e.printStackTrace();}}}}使用方法public class Main {public static void main(String[] args) {MyThread thread1 new MyThread();MyThread thread2 new MyThread();thread1.start(); // 启动线程1thread2.start(); // 启动线程2}}2. 实现Runnable接口public class MyRunnable implements Runnable {Overridepublic void run() {// 线程执行的代码for (int i 0; i 5; i) {System.out.println(Thread.currentThread().getName() : i);try {Thread.sleep(500); // 线程休眠500毫秒} catch (InterruptedException e) {e.printStackTrace();}}}}使用方法public class Main {public static void main(String[] args) {Thread thread1 new Thread(new MyRunnable());Thread thread2 new Thread(new MyRunnable());thread1.start(); // 启动线程1thread2.start(); // 启动线程2}}推荐使用实现Runnable接口的方式- Java不支持多重继承实现接口更灵活- 代码和线程控制分离更符合面向对象设计原则- 适合多个线程处理同一资源的情况二线程的常用方法1. start() - 启动线程调用start()方法会启动新线程并执行run()方法。注意不要直接调用run()方法否则它会在当前线程中执行而不是新线程。Thread thread new Thread(new MyRunnable());thread.start(); // 正确方式// thread.run(); // 错误方式 - 不会启动新线程2. sleep() - 线程休眠让当前线程暂停执行指定的时间毫秒但不会释放锁。关于锁我会在后续博客中进行讲解try {Thread.sleep(1000); // 休眠1秒} catch (InterruptedException e) {e.printStackTrace();}需要设置在指定的线程方法中更能精准的操控线程的运行3. join() - 等待线程结束等待调用该方法的线程执行完毕当前线程才会继续执行。Thread thread new Thread(new MyRunnable());thread.start();try {thread.join(); // 等待thread线程执行完毕System.out.println(thread线程已执行完毕);} catch (InterruptedException e) {e.printStackTrace();}4. interrupt() - 中断线程向线程发送中断信号但线程是否中断取决于其实现。Thread thread new Thread(() - {while (!Thread.currentThread().isInterrupted()) {// 检查中断状态System.out.println(线程运行中...);try {Thread.sleep(1000);} catch (InterruptedException e) {// 捕获中断异常后中断状态会被清除System.out.println(线程被中断);Thread.currentThread().interrupt(); // 重新设置中断状态}}System.out.println(线程结束);});thread.start();// 3秒后中断线程try {Thread.sleep(3000);thread.interrupt(); // 中断线程} catch (InterruptedException e) {e.printStackTrace();}三线程的生命周期线程有以下几种状态1. **NEW**新建状态线程被创建但尚未启动2. **RUNNABLE**可运行状态线程正在JVM中执行或等待系统资源3. **BLOCKED**阻塞状态线程等待监视器锁4. **WAITING**等待状态线程无限期等待其他线程执行特定操作5. **TIMED_WAITING**超时等待状态线程在指定时间内等待6. **TERMINATED**终止状态线程已执行完毕四守护线程守护线程是为用户线程提供服务的后台线程当所有用户线程结束时守护线程会自动终止。Thread daemonThread new Thread(new MyRunnable());daemonThread.setDaemon(true); // 设置为守护线程daemonThread.start();多线程编程是一个复杂但强大的主题掌握Thread类的基本用法是学习更高级并发编程的基础。在实际开发中还需要注意线程安全、死锁、性能等问题。
延伸阅读

更多相关文章

2026/10/22 12:31:09

5分钟给PS3游戏打上中文:RPCS3汉化补丁系统实战走查

5分钟给PS3游戏打上中文:RPCS3汉化补丁系统实战走查 【免费下载链接】rpcs3 PlayStation 3 emulator and debugger 项目地址: https://gitcode.com/GitHub_Trending/rp/rpcs3 RPCS3 内置了一套补丁系统(Patch Manager),配合…

2026/10/22 13:46:33

上下文工程实战:从72%到91%准确率的智能体优化复盘

从一次客服机器人改版说起:我把一个"看起来什么都懂"的智能体,从准确率72%调到了91%,单次调用成本还降了一半以上。这个过程中最深刻的体会是——模型本身没换,prompt也没有玄学式的反复修改,真正的杠杆在上…

2026/10/22 13:46:33

数字串123222工程实战:进制转换、质因数分解与分布式分片

我看到“123222”这种数字串,第一反应不是“这有什么可挖的”,而是“这能当多少种样本用”。六位数字,字符组成简单,却同时具备统计特征、数学性质、进制转换后的多重身份,甚至可以直接扔进测试用例、分布式分片和校验…

2026/10/22 13:46:33

RESTful接口设计:资源、路径、方法的对应关系全拆解

RESTful 接口这块,很多团队聊起来能聊一下午,但真到写代码的时候,最容易出问题的反而是最基础的三个词:资源、路径、方法。我见过不少前后端联调翻车的现场,根因几乎都不是框架不会用,而是这三者的对应关系…

2026/10/22 13:46:33

仿微信登录注册界面:Android Studio线性布局实现与避坑指南

简介:面向 Android 初学者的仿微信登录注册界面完整工程包,采用 Java 与 Android Studio 实现,重点演示线性布局 LinearLayout 的垂直/水平排列、layout_weight 权重分配、EditText 与 Button 样式定制,并涵盖登录与注册页间的 In…

2026/10/22 13:46:33

提示工程持续部署:从版本化到灰度回滚的完整策略

最近在搭提示工程持续部署机制的时候,我被问得最多的一个问题特别直接:Prompt也要做持续部署?不都是改完直接上线看效果吗?这个问题的背后,其实是很多团队仍然在用“改代码、跑测试、发版”那套传统CD思路来管理人机交…

2026/10/22 13:41:31

AI办公提效实战:提示词与校验如何改造周报、对账和会议纪要

到了2026年,AI办公早就不是什么遥远概念,而是我每天打开电脑就要面对的事。身边有人对各种新功能如数家珍,也有人还在用最原始的方式手工填表、逐句改汇报,最后被大量低水平重复劳动拖到晚上九十点。说白了,AI工具已经…

2026/10/22 11:29:28

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/22 0:01:49

电商智能运营体系从0到1:架构设计、落地步骤与避坑指南

前两年我们团队接了一个电商平台的运营中台项目,目标很直白:把过去靠运营拍脑袋做的选品、定价、发券、推活动这些事,逐步用数据算法和自动化流程代替。项目名字内部就叫“电商智能运营体系”。最近有不少朋友问我当时是怎么设计的、踩过哪些…

2026/10/22 0:01:49

若依框架AI代码生成不稳定?用Agent Skill三层结构+五步法搞定

最近一段时间,我一直想把后台管理系统里那些机械重复的增删改查代码交给AI去写。框架用的是若依,按理说这类业务代码模式非常固定,应该是AI最擅长的事情。可真试下来却不是那么回事——你让AI生成一个用户管理模块,它给出的Contro…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑