Thread 类中常用的成员方法

目录

[1. String getName()](#1. String getName())

[2. void setName(String name)](#2. void setName(String name))

[3. static Thread currentThread()](#3. static Thread currentThread())

[4. static void sleep(long time)](#4. static void sleep(long time))

[5. setPriority(int newProority)](#5. setPriority(int newProority))

[6. final int getPriority()](#6. final int getPriority())

[7. final void setDaemon(boolean on)](#7. final void setDaemon(boolean on))

[8. public static void yield()](#8. public static void yield())

[9. public static void join()](#9. public static void join())


我们知道,Thread 是Java中已经提供好的一个线程类,那么既然是类,它就会有成员方法,本篇主要讲述一下 Thread 类中常用到的一些成员方法。

1. String getName()

getName() 是 Thread 类中已经定义好的一个成员方法,返回值是 String ,调用该方法可以返回线程的名称。

2. void setName(String name)

setName(),听名字也知道,是给线程赋予名称,线程虽然有默认的名称,但我们也可以通过 setName() 给线程更改别的名称。

3. static Thread currentThread()

currentThread() 是一个静态方法,通过类名.方法名调用,方法返回值是一个线程,它可以用来获取当前线程的对象。

4. static void sleep(long time)

sleep 方法可以让我们当前的线程休眠,释放CPU的执行权,当休眠时间结束之后,它会再次争抢CPU的执行权,这里还有一点要注意,该方法参数的单位是毫秒,写1000,就是睡1 秒。

5. setPriority(int newProority)

setPriority 可以为线程设置优先级,线程优先级最高为10,最低为1,所有线程默认的优先级都是5,也就是说所有线程抢夺CPU资源的可能性都是一样的,如果我们为线程设置优先级,优先级越高,抢夺到CPU执行权的概率越大,但并不是说抢不到,只是概率变小了;优先级越低,抢夺到CPU执行权的概率越小。

6. final int getPriority()

getPriority 可以获取到县城的优先级,返回值是 int ,也是1~10之间的数。

7. final void setDaemon(boolean on)

调用 setDaemon 方法可以让我们将一个线程变成守护线程,何为守护线程呢?

比如说现在有两个线程,线程A和线程B,我将线程B设置为守护线程,那么当线程A执行结束之后,不管线程B有没有执行完,都必须停止。

举个最简单的例子,在QQ上你和好友聊天,我们把聊当作线程A,然后你给好友传输文件,传输文件又开辟了一个线程B,当你关闭了和好友的聊天窗口,聊天线程A结束,传输文件的线程B也会直接结束,不管文件是否传输完成,这就是守护线程。

8. public static void yield()

调用 yield 方法可以使当前线程让出CPU的执行权,如果当前线程抢夺到了CPU的执行权,只要调用 yield 方法,方法会让出CPU的执行权,回到就绪状态,重新抢夺CPU的执行权。

9. public static void join()

调用 yield 方法可以在一个线程中加入另一个线程。

举个例子来说,当我们程序的线程A正在处于运行状态,当我们希望程序运行到某一行代码的时候先暂停线程A的执行,让另一个线程B来执行,我们就可以让线程B调用 jion 方法,那么线程A就会停止,等到线程B执行完线程A才会继续执行。

相关推荐
mldong4 小时前
引擎从不发一条消息:jeeflow 的两类扩展点与消息模块的分工
java·架构
君顾15 小时前
智慧零售实战指南:从技术架构到落地方案全解析
java·开发语言·零售
南棱笑笑生5 小时前
20260904实测给飞凌OK3576-C开发板刷入Rockchip原厂的IMG固件【使用飞凌的DTS】切换串口波特率为1.5Mbps
c语言·开发语言·rockchip
zhanghe6875 小时前
es的密码带有特殊字符,导出
java
平头哥技术团队5 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
pnoker5 小时前
IoT DC3 概念解读:把设备抽象成一套语义模板——位号、指令、事件与面向智能体的设备建模
java·人工智能·物联网·iot·dc3
乌萨奇也要立志学C++5 小时前
【洛谷】kmp算法
开发语言·算法
my_realmy5 小时前
Java SE 基础学习笔记(一):面向对象、继承多态、抽象接口与异常(JDK 8)
java·多线程·并发··生产者消费者模式
传奇开心果编程6 小时前
【Rust入门知识点学与练】第4课:条件判断 if / else
开发语言·学习·rust
m0_380743876 小时前
给 Claude API 调用补上超时重试和错误分类
开发语言·人工智能·php