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

Thread类及常见方法

一、Thread的常见构造方法

方法说明
Thread()

这会创建一个默认的线程对象,没有指定要执行的任务

Thread(Runnable target)

通过传入一个 Runnable 接口的实现类来指定线程要执行的任务

Thread(String name)

创建线程并指定线程名称,便于调试和日志记录

Thread(Runnable target,String name)

同时指定任务和名称

示例:

// 无参构造 Thread thread1 = new Thread(); // 带 Runnable Runnable task = () -> System.out.println("Hello from thread"); Thread thread2 = new Thread(task); // 带名称 Thread thread3 = new Thread("MyThread"); // 带 Runnable 和名称 Thread thread4 = new Thread(task, "MyTaskThread");

二、Thread的几种常见属性

属性获取方法
线程名称getName()
线程优先级getPriority()
守护线程标志isDeamo()
线程IDgetId()
线程状态getState()

示例:

Thread thread = new Thread(); System.out.println("Name: " + thread.getName()); // Thread-0 System.out.println("Priority: " + thread.getPriority()); // 5 System.out.println("Is Daemon: " + thread.isDaemon()); // false System.out.println("ID: " + thread.getId()); // 例如 12 System.out.println("State: " + thread.getState()); // NEW

三、启动一个线程-start()

要启动一个线程,不能直接调用 run() 方法(那样只是普通方法调用,不会开启新线程),而是要调用 start() 方法。start() 会通知 JVM 创建一个新线程,并调用 run() 方法。

  • public void start():启动线程。一旦调用,线程进入 RUNNABLE 状态。
  • 注意:一个线程只能调用一次 start(),多次调用会抛出 IllegalThreadStateException。

示例:

Thread thread = new Thread(() -> { System.out.println("Thread is running"); }); thread.start(); // 启动线程

四、中断一个线程

方法说明

public void interrupt()

向线程发送中断信号,设置中断标志

public boolean isInterrupted()

检查中断标志(不清除)

public static boolean interrupted()

检查并清除中断标志

示例:

Thread thread = new Thread(() -> { while (!Thread.interrupted()) { System.out.println("Working..."); } System.out.println("Interrupted!"); }); thread.start(); // 稍后中断 thread.interrupt();

五、等待一个线程-join()

方法说明

public void join()

无限等待,直到目标线程结束

public void join(long millis)

等待指定毫秒,如果超时则继续

public void join(long millis, int nanos)

更精确的超时等待

示例:

Thread thread = new Thread(() -> { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Thread finished"); }); thread.start(); try { thread.join(); // 主线程等待 thread 完成 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Main thread continues");

六、获取当前线程引用

方法说明

public static Thread currentThread()

返回当前线程的 Thread 对象

示例:

public class Main { public static void main(String[] args) { Thread current = Thread.currentThread(); System.out.println("Current thread: " + current.getName()); // main new Thread(() -> { Thread inner = Thread.currentThread(); System.out.println("Inner thread: " + inner.getName()); // Thread-0 }).start(); } }

七、休眠当前线程

方法说明

public static void sleep(long millis)

休眠指定毫秒

public static void sleep(long millis, int nanos)

更精确的休眠

示例:

try { Thread.sleep(1000); // 休眠 1 秒 } catch (InterruptedException e) { // 处理中断 Thread.currentThread().interrupt(); // 重新设置中断标志 } System.out.println("Woke up!");
http://www.cnnetsun.cn/news/46020.html

相关文章:

  • Qwen3-VL-8B-Thinking:2025多模态AI革命,从看懂到行动的跨越
  • Next.js缓存迷思终结者:告别“本地正常线上崩“的终极指南
  • Wan2.1首尾帧视频生成实战教程:从入门到精通
  • 3个技巧让你的Android应用实现智能视频自动播放
  • 腾讯混元大模型开源:520亿激活参数重构AI产业效率标准
  • Heroicons SVG图标库完整手册:从入门到精通的终极指南
  • GLM-4.5V-FP8:轻量化多模态大模型如何重塑企业AI落地标准
  • VMware macOS解锁终极指南:普通PC运行苹果系统全攻略
  • RWKV-5 World多语言AI模型:从零开始快速上手指南
  • 基于vue的在线教育平台 学习计划 师生互动交流_i709kk2j_springboot php python nodejs
  • 基于vue的智慧仓库预警管理系统设计与实现_0m8200p8_springboot php python nodejs
  • 8GB显存即可生成视频:WanVideo_comfy如何重塑AI创作生态
  • BiliLocal:为本地视频注入弹幕灵魂的智能伴侣
  • 数据库技术全景图:从零到精通的系统学习指南
  • Android权限管理终极指南:PermissionX快速上手教程
  • DeepLabCut终极实战:5步搞定AI动物行为分析
  • AI协作如何重塑智能餐饮:从传统痛点到未来蓝图的全面解析
  • Windows平台FIO性能测试工具:从下载到使用的完整教程
  • 华炎魔方低代码平台:5分钟快速构建企业级应用的终极指南
  • 240亿参数重塑本地AI:Magistral Small 1.2开启消费级硬件多模态时代
  • 3分钟上手Bililive-go:全网直播一键录制终极指南
  • 亚马逊云科技携手MSK,加速AI人工智能驱动的癌症创新
  • 3步终极指南:让老款Mac免费升级最新系统的完整解决方案
  • 210亿参数仅需80G显存:ERNIE-4.5轻量化模型重新定义AI推理效率
  • Qwen2.5-32B-DialogueReason:智能对话推理新范式,重新定义行业交互体验
  • 智能地址解析:重新定义地址数据处理的效率革命
  • 如何快速重装系统:VPS用户的完整指南
  • ScienceDecrypting:终极学术文档解密工具,让PDF访问限制不再困扰
  • electerm主题编辑器深度定制:打造个性化终端视觉体验
  • 视频生成成本降70%:阿里Wan2.2如何用MoE架构重构创作生产力