并发基础篇(二):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(SIHAIloveJAVA)

原文发表时间:2018-06-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java系列博客

Java面试通关要点汇总集基础篇之参考答案

2314
来自专栏JavaEE

java基础知识02

1、String字符串: 字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中。用length()方法获取长度。

832
来自专栏吴伟祥

手写tomcat监控工具---宕机重启 原

3123
来自专栏LinkedBear的个人空间

唠唠SE的IO-04——缓冲输入输出流 原

BufferedOutputStream和BufferedOutputStream类可以通过减少读写次数来提高输入和输出的速度。

1033
来自专栏李航的专栏

Shell 主要逻辑源码级分析:SHELL 运行流程 (1)

分享一下在学校的时候分析shell源码的一些收获,帮助大家了解shell的一个工作流程,从软件设计的角度,看看shell这样一个历史悠久的软件的一些设计优点和缺...

2.1K0
来自专栏服务端技术杂谈

Golang笔记

静态编译 编译时一个将源代码翻译成低级语言的过程。编译过程比较慢,在设计Go时,编译速度是主要的设计目标之一。静态类型意味着变量必须指定一个类型,如整形,字符串...

3014
来自专栏PHP实战技术

Mysql字段类型设计相关问题!

Mysql是以文件存储在我们的系统的硬盘上面,那么

2586
来自专栏木宛城主

Unity应用架构设计(7)——IoC工厂理念先行

一谈到 『IoC』,有经验的程序员马上会联想到控制反转,将创建对象的责任反转给工厂。IoC是依赖注入 『DI』 的核心,大名鼎鼎的Spring框架就是一个非常...

2877
来自专栏海说

早期(编译期)优化

  相当多新生的java语法特性,都是靠编译器的“语法糖”来实现,而不是依赖虚拟机的底层改进来支持,java中即时编译器地运行期的优化过程对于程序运行来说更重要...

2040
来自专栏Java技术栈

JVM运行时区域详解。

我们知道的JVM内存区域有:堆和栈,这是一种泛的分法,也是按运行时区域的一种分法,堆是所有线程共享的一块区域,而栈是线程隔离的,每个线程互不共享。 线程不共享区...

3064

扫码关注云+社区

领取腾讯云代金券