并发基础(二) 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) 参数列表:直线开始的横坐标.纵坐标,直线结束的横坐 ...
随机推荐
- show point on image
show point on image... for ( int i = 0; i < probp.size(); i++ ) { cv::Point pt = probp[i]; Distan ...
- 计算n^k的开头三位和末尾三位(fmod(double x,double y)函数的引入)
C 库函数 double fmod(double x, double y) 返回 x 除以 y 的余数. 所以fmod(x,1)得到的就是小数部分的值(如fmod(3.35,1)==0.35) htt ...
- 【知识笔记】Debugging
一.启动调试出现 无法启动程序 当前状态中是非法 VS工具--选项--调试--常规--启用asp.net的JavaScript调试(chrome和ie)去掉勾选 二.web.config中<cu ...
- SQL Server系统表介绍与使用
关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格.但是,你可能需要偶尔做一点不同寻常的事,例如数据库所有的触发器.你可 ...
- MySQL · 特性分析 · 优化器 MRR & BKA【转】
MySQL · 特性分析 · 优化器 MRR & BKA 上一篇文章咱们对 ICP 进行了一次全面的分析,本篇文章小编继续为大家分析优化器的另外两个选项: MRR & batched_ ...
- 【转】每天一个linux命令(58):telnet命令
原文网址:http://www.cnblogs.com/peida/archive/2013/03/13/2956992.html telnet命令通常用来远程登录.telnet程序是基于TELNET ...
- FormData 知识点
通过FormData对象可以组装一组用 XMLHttpRequest发送请求的键/值对.它可以更灵活方便的发送表单数据,因此可以独立于表单使用. 如果你把表单的编码类型设置为multipart/for ...
- centos6 安装GitLab
环境 Requirements 软件 版本CentOS 6.6Python 2.6Ruby 2.1.5Git 1.7.10+Redis 2.0+MySQL GitLab 7-8-stableGitLa ...
- 深入理解ASP.NET MVC(1)
系列目录 ASP.NET MVC请求的服务过程 下图是书中的截图,表述了一次通常的ASP.NET MVC请求的服务过程: 从图中可以初步看出一个HttpRequest是如何被ASP.NET和ASP.N ...
- 关于innodb_thread_concurrency参数 并发控制
http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html#sysvar_innodb_thread_concurrency Comma ...