Thread类常用的方法


参考自: 传送门

1. run()与start()方法:启动线程

  • 使用继承 Thread 类的方法创建新线程
    在这里插入图片描述

  • 从运行结果我们可以看出:虽然步骤1在步骤2前面,但是步骤2却比步骤1先执行完。

  • 这是因为 start()方法的执行比较耗时,底层有如下过程:
    1)通过 JVM 告诉操作系统创建线程 Thread
    2)操作系统开辟内存并调用系统函数创建 Thread 线程对象
    3)操作系统对 Thread 线程对象进行调度,以确定执行时机
    4)Thread 在操作系统中被成功执行

  • 注意: 如果在 run 类中直接调用 thread.run()方法,就不是异步执行了,而是同步执行,此线程对象不交给底层的“线程规划器”处理,而是有 main 主线程来调用,也就是必须等 run()方法中的代码执行完毕后才可以执行后面的代码。如下所示:
    在这里插入图片描述

2. get方法:获取线程标识

在这里插入图片描述

3. currentThread()方法

  • 返回对当前正在执行的线程对象的引用

4. isAlive()方法

  • 判断当前线程是否存活

5. sleep()方法

  • sleep(long millis) 让线程休眠

6. yield()方法

  • 其作用是放弃当前的CPU资源,让其他的任务去占用cpu执行时间,放弃时间不确定,有可能刚放弃又马上获得时间片。

7. getStackTrace()方法

  • 返回一个表示该线程堆栈跟踪元素数组,如果该线程尚未启动或已经终止,则该方法将返回一个零长度的数组。如果返回的数组不是零长度的,则第一个元素表示堆栈顶,它是该数组中最新的方法调用。最后一个元素表示堆栈底,是该数组中最旧的方法调用。

8. dumpStack()方法

  • 将当前线程的堆栈跟踪打印到标准错误流,该方法仅用于调试。

9. getAllStackTraces()方法

  • 返回所有线程的堆栈跟踪图,地图键是线程,每个地图的值是StackTraceElement数组,表示对应的Thread的堆栈转储。
  • 调用该方法的同时,线程可能也在执行。每个线程的堆栈跟踪仅代表一个快照。

10. setPriority(int newPriority)方法

  • 在Java中,线程的优先级分为1-10的等级,如果优先级小于1或者大于10,会抛出IllegalArgumentException()。
  • 更改线程的优先级,首先调用这个线程的checkAccess方法,没有参数。这可能会导致投掷SecurityException 。 否则,该线程的优先级设置为指定的小newPriority和最大允许的线程的线程组的优先级。

11. setDaemon(boolean on)方法

  • 将此线程标记为守护线程或用户线程,当前运行的唯一线程都是守护线程时,Java虚拟机将退出,线程启动前必须调用此方法
  • on 如果为true,将此线程标记为守护线程。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值