并发基础篇(二)——Thread类的API总结

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 并发基础篇(二)——Thread类的API总结

Thread 类是java中的线程类,提供给用户用于创建、操作线程、获取线程的信息的类。是java线程一切的基础,掌握这个类是非常必须的,先来看一下它的API.

1、字段摘要

|static int MAX_PRIORITY|线程可以具有的最高优先级
|——
|static int MIN_PRIORITY|线程可以具有的最低优先级
|static int NORM_PRIORITY|分配给线程的默认优先级

2、构造方法摘要

|Thread() :|分配新的 Thread 对象。
|——
|Thread(Runnable target) :|分配新的 Thread 对象。
|Thread(Runnable target, String name) :|分配新的 Thread 对象。
|Thread(String name) :|分配新的 Thread 对象。参数是线程名称
|Thread(ThreadGroup group, Runnable target):|分配新的 Thread 对象。
|Thread(ThreadGroup group, Runnable target, String name) :|分配新的 Thread 对象,以便将 target 作为其运行对象,将指定的 name 作为其名称,并作为 group 所引用的线程组的一员。
|Thread(ThreadGroup group, Runnable target, String name, long stackSize):|分配新的 Thread 对象,以便将 target 作为其运行对象,将指定的 name 作为其名称,作为 group 所引用的线程组的一员,并具有指定的堆栈大小。
|Thread(ThreadGroup group, String name) :|分配新的 Thread 对象。

注意:   线程组(ThreadGroup )已经算是过时的,被抛弃的了,所以不需要去研究线程组,仅仅知道有这个存在就可以了。按照《java编程思想》的说法,线程组一次不成功的尝试   

3、方法摘要

3.1、静态方法

|static Thread currentThread():|返回对当前正在执行的线程对象的引用。
|——
|static int activeCount():|返回当前线程的线程组中活动线程的数目。
|static boolean interrupted():|测试当前线程是否已经中断。
|static void sleep(long millis):|在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。
|static void sleep(long millis, int nanos):|在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。
|static void yield():|暂停当前正在执行的线程对象,并执行其他线程。
|static boolean holdsLock(Object obj):|当且仅当当前线程在指定的对象上保持监视器锁时,才返回 true。
|static void dumpStack():|将当前线程的堆栈跟踪打印至标准错误流。
|static int enumerate(Thread[] tarray):|将当前线程的线程组及其子组中的每一个活动线程复制到指定的数组中。
|static Map< Thread,StackTraceElement[]> getAllStackTraces():|返回所有活动线程的堆栈跟踪的一个映射。
|static Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler():|返回线程由于未捕获到异常而突然终止时调用的默认处理程序。
|static void setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)|设置当线程由于未捕获到异常而突然终止,并且没有为该线程定义其他处理程序时所调用的默认处理程序。

3.2、获取线程的信息

|long getId():|返回该线程的唯一标识符。
|——
|String getName():|返回该线程的名称。
|int getPriority():|返回线程的优先级。
|Thread.State getState():|返回该线程的状态。
|ThreadGroup getThreadGroup():|返回该线程所属的线程组。
|ClassLoader getContextClassLoader():|返回该线程的上下文 ClassLoader。
|StackTraceElement[] getStackTrace():|返回一个表示该线程堆栈转储的堆栈跟踪元素数组。
|Thread.UncaughtExceptionHandler getUncaughtExceptionHandler():|返回该线程由于未捕获到异常而突然终止时调用的处理程序。

3.3、线程的其他操作

|void checkAccess():|判定当前运行的线程是否有权修改该线程。
|——
|void interrupt():|中断线程。
|boolean isInterrupted():|测试线程是否已经中断。
|boolean isAlive():|测试线程是否处于活动状态。
|boolean isDaemon():|测试该线程是否为守护线程。即后台线程
|void setName(String name):|改变线程名称,使之与参数 name 相同。
|void setPriority(int newPriority):|更改线程的优先级。
|void setDaemon(boolean on):|将该线程标记为守护线程或用户线程。又叫后台线程(是后台提供一种通用的服务线程)
|void setContextClassLoader(ClassLoader cl):|设置该线程的上下文 ClassLoader。
|void setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh):|设置该线程由于未捕获到异常而突然终止时调用的处理程序。
|void join():|等待该线程终止。
|void join(long millis):|等待该线程终止的时间最长为 millis 毫秒。
|void join(long millis, int nanos):|等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。
|void start():|使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
|String toString():|返回该线程的字符串表示形式,包括线程名称、优先级和线程组。

这篇文章主要是对于线程的一些常用的api的总结,可以收藏起来需要的时候回忆或者看看。

文章有不当之处,欢迎指正,你也可以关注我的微信公众号: 好好学java,获取优质学习资源。

原文地址:https://sihai.blog.csdn.net/article/details/80255229

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 并发基础篇(二)——Thread类的API总结


 上一篇
Java 集合系列10—— HashMap深入解析(1) Java 集合系列10—— HashMap深入解析(1)
戳上面的蓝字关注我们哦!  精彩内容    QQ群:** 766946816** 概要 这一章,我们对HashMap进行学习。我们先对HashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashMap。 第1部分
2021-04-04
下一篇 
并发基础篇(四)—— java中线程的状态深入浅出 并发基础篇(四)—— java中线程的状态深入浅出
一、线程的五种状态  线程的生命周期可以大致分为5种,但这种说法是比较旧的一种说法,有点过时了,或者更确切的来说,这是操作系统的说法,而不是java的说法。但对下面所说的六种状态的理解有所帮助,所以也写出来,作为参考。 1. NEW: 线
2021-04-04