并发基础(二) 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():返回该线程的字符串表示形式,包括线程名称、优先级和线程组。
并发基础(二) Thread类的API总结的更多相关文章
- Java并发编程:Thread类的使用
Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来.以及如何在Java中怎么创建线程和进程.今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知 ...
- 【转】Java并发编程:Thread类的使用
一.线程的状态 在正式学习Thread类中的具体方法之前,我们先来了解一下线程有哪些状态,这个将会有助于对Thread类中的方法的理解. 线程从创建到最终的消亡,要经历若干个状态.一般来说,线程包括以 ...
- 3、Java并发编程:Thread类的使用
Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来.以及如何在Java中怎么创建线程和进程.今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知 ...
- Java 并发:学习Thread 类
Java 中 Thread类 的各种操作与线程的生命周期密不可分,了解线程的生命周期有助于对Thread类中的各方法的理解.一般来说,线程从最初的创建到最终的消亡,要经历创建.就绪.运行.阻塞 和 消 ...
- 并发编程之 Thread 类过期方法和常用方法
前言 在 Java 刚诞生时,Thread 类就已经有了很多方法,但这些方法由于一些原因(有一些明显的bug或者设计不合理)有些已经废弃了,但是他们的方法名却是非常的好,真的是浪费.我们在进行并发必编 ...
- Java并发编程:Thread类的使用介绍
在学习Thread类之前,先介绍与线程相关知识:线程的几种状态.上下文切换,然后接着介绍Thread类中的方法的具体使用. 以下是本文的目录大纲: 一.线程的状态 二.上下文切换 三.Thread类中 ...
- Java并发编程:Thread类的使用(转载)
一:线程的状态: 在正式学习Thread类中的具体方法之前,我们先来了解一下线程有哪些状态,这个将会有助于后面对Thread类中的方法的理解. 线程从创建到最终的消亡,要经历若干个状态.一般来说,线程 ...
- 【Java_多线程并发编程】基础篇—Thread类中start()和run()方法的区别
1. start() 和 run()的区别说明 start()方法: 它会启动一个新线程,并将其添加到线程池中,待其获得CPU资源时会执行run()方法,start()不能被重复调用. run()方法 ...
- java 基础二 Graphics类
一.处理图形 1.画直线 void drawLine (int startx , int starty , int endx , int endy) 参数列表:直线开始的横坐标.纵坐标,直线结束的横坐 ...
随机推荐
- magento的必备插件(转)
标签: 插件 magento magento插件 必备插件 Magento插件 ,插件,我要常见Magento必备插件 .. 都是免费的Magento插件,多而杂,乡亲们自己挑~~ [因收集而强大 & ...
- Android Studio安装、配置教程全 - 安卓开发环境的配置手册
Android Studio的安装.配置 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 一 Downloa ...
- Unity 3D开发-C#脚本语言的一些基础用法
Unity 中C#语言的一些基础用法 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Lerp -- 线 ...
- nginx服务相关操作
安装目录 和大多软件一样一般安装在 /usr/local/ 目录下 /usr/local/ 命令man Usage: nginx [-?hvVt] [-s signal] [-c filename] ...
- js 如何控制文本域输入内容在一定间隔时间段才触发事件查询相关数据
<script>var flag = 0;var t;function openFlag () { t = setTimeout(function(){flag = 1; dosometh ...
- Fzu软工第一次作业-准备篇
(0)一些想说的话 我叫陈浩,是16级计算机一个很普通的学生.我是补选选软工实践这门课的.选软工实践这门课我想了很久.因为学长学姐告诉我这是一门很锻炼人又很辛苦的课程,需要大量的时间和精力.然而如今的 ...
- web 资源好文
https://www.jianshu.com/p/e065aadf8daa : 五年 Web 开发者 star 的 github 整理说明
- oracle在进行跨库访问时,采用dblink实现
首先了解下环境:在tnsnames.ora中配置两个数据库别名:test1/test1@11orcl1.tets2/tets2@12orlc2,在orcl1中创建database link来访问orc ...
- git的使用方法学习
1.git常用命令: git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致.同时,将当前的工作区内容保存到Git栈中. git stash p ...
- CAM 查看里先选哪些层才能方便查看
CAM 检查 Gerber 时选 Layer 时有先后次序,才以看清楚是否有冲突. 比如检查 TOP 层时顺序应该是 MT ST L1 BOT 层检查顺序 MB SB L2/L4