一、thread类有一些保存信息的属性,这些属性可以用来标识线程,显示线程的状态或者控制线程的优先级。

1.ID:保存了线程的唯一标识符

2.Name:保存了线程的名称

3.Priority:保存了线程对象的优先级。线程的优先级是从1到10,其中1是最低优先级,10是最高优先级。

4.Status:保存了线程的状态。线程的状态有6种:new、runnable、blocked、waiting、time waiting或者terminated。

二、线程的中断

1.Thread类中的isInterrupted()方法

2.Thread类的静态方法interrupted()方法

isInterrupted()方法和interrupted()方法的区别是:isInterrupted()方法不能改变interrupted属性的值,但是interrupted()方法能设置interrupted属性为false。因为interrupted()方法是一个静态方法,更推荐使用isInterrupted()方法。

三、线程的休眠

线程休眠可以调用Thread类的静态方法sleep(long millis),该方法参数单位为毫秒。

另外一种方式是通过TimeUnit枚举类来使用Thread类的sleep()方法,但是它接收的参数单位是秒,最终被转为毫秒。

四、等待线程的终止

在一些情况下,我们必须等待线程终止后,在执行其他任务,这时候我们使用Thread类的join()方法。

当一个线程对象的join()方法被调用时,调用它的线程将被挂起,直到这个线程对象完成它的任务。

java提供了另外两种形式的join()方法:参数单位毫秒和纳秒

join(long milliseconds)

join(long milliseconds,long nanos)

五、守护线程

守护线程的优先级很低,通常来说,当同一个应用程序里没有其他的线程运行时候,守护线程才运行。当守护线程是程序中唯一运行的线程时,守护线程执行结束后,JVM也就结束了这个程序。

Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是 GC (垃圾回收器),它就是一个很称职的守护者。
User和Daemon两者几乎没有区别,唯一的不同之处就在于虚拟机的离开:如果 User Thread已经全部退出运行了,只剩下Daemon Thread存在了,虚拟机也就退出了。 因为没有了被守护者,Daemon也就没有工作可做了,也就没有继续运行程序的必要了。
值得一提的是,守护线程并非只有虚拟机内部提供,用户在编写程序时也可以自己设置守护线程。下面的方法就是用来设置守护线程的。

Thread daemonTread = new Thread();  
// 设定 daemonThread 为 守护线程,default false(非守护线程)  
daemonThread.setDaemon(true);  
// 验证当前线程是否为守护线程,返回 true 则为守护线程  
daemonThread.isDaemon();   
setDaemon()方法只能在start()方法被调用之前设置。一旦线程开始运行,将不能再修改守护状态。
isDaemon()方法被用来检查一个线程是不是守护线程,返回值为true表示这个线程是守护线程,false表示这个线程是用户线程。

六、线程局部变量的使用

ThreadLocal为每个使用该变量的线程分配一个独立的变量副本。所以每一个线程都可以独立地改变自己的副本,而不会影响其他线程所对应的副本。
1、ThreadLocal不是线程,是线程的一个变量,你可以先简单理解为线程类的属性变量。
2、ThreadLocal在类中通常定义为静态变量。
3、每个线程有自己的一个ThreadLocal,它是变量的一个“拷贝”,修改它不影响其他线程。
ThreadLocal适用于资源共享但不需要维护状态的情况,也就是一个线程对资源的修改,不影响另一个线程的运行;这种设计是‘空间换时间’,synchronized顺序执行是‘时间换取空间’。
四个核心方法说明如下:
T get():返回此线程局部变量的当前线程副本中的值。
protected T initialValue():返回此线程局部变量的当前线程的“初始值”。
void remove():移除此线程局部变量当前线程的值。
void set(T value):将此线程局部变量的当前线程副本中的值设置为指定值。

七、线程的分组

Java Concurrent API中提供了对线程进行分组管理的ThreadGroup,使得我们可以将多个线程看作一个单元,对这些线程执行操作,如中断一组线程等。

ThreadGroup类有很多方法,它的API文档提供了所有的方法的完整解释。

八、线程工厂类

工厂模式是面向对象编程中最常使用的模式之一。它是一个创建者模式,使用一个类为其他的一个或者多个类创建对象。当我们要为这些类创建对象时,不需再使用new构造器,而使用工厂类。
使用工厂类,可以将对象的创建集中化,这样做有以下的好处:
1、更容易修改类,或者改变创建对象的方式;
2、更容易为有限资源限制创建对象的数目。例如,我们可以限制一个类型的对象不多于n个。
3、更容易为创建的对象生成统计数据。
Java提供了ThreadFactory接口,这个接口实现了线程对象工厂。Java并发API的高级工具类也使用了线程工厂创建线程。

转载于:https://www.cnblogs.com/web424/p/7874202.html

线程信息的获取和设置相关推荐

  1. 《Java程序员面试秘笈》—— 1.3 线程信息的获取和设置

    本节书摘来异步社区<Java 7并发编程实战手册>一书中的第1章,第1.3节,作者:[西]Javier Fernández González,更多章节内容可以访问云栖社区"异步社 ...

  2. chrome浏览器本地信息的获取与设置

    简介 本文主要针对前段开发,对于生产环境的开发经常会遇到拷被chrome本地LocalStroage里边的信息,手动的C和V显的太过繁琐.这里我主要使用chrome的插件(暴力猴)进行书写脚本解决这一 ...

  3. 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称

    文章目录 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称 ...

  4. java获取当前tomcat线程pid_java 查看tomcat线程信息(示例代码)

    查看线程信息 标签: 线程 堆栈 信息 日志 tomcat 响应 tomcat有时候会遇到所有操作都响应很慢,或者一直没有响应的情况.如果这个时候通过日志无法看到错误信息.可能就不好分析问题出处. 这 ...

  5. 聊聊Spring Boot服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控等!...

    来自:https://juejin.im/post/5e2179def265da3e152d2561 前言 去年我们项目做了微服务1.0的架构转型,但是服务监控这块却没有跟上.这不,最近我就被分配了要 ...

  6. Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控...

    作者:Richard_Yi 来源:http://39sd.cn/B2A0B 去年我们项目做了微服务1.0的架构转型,但是服务监控这块却没有跟上.这不,最近我就被分配了要将我们核心的微服务应用全部监控起 ...

  7. 如何读取电脑html信息,JavaScript 获取客户端计算机硬件及系统信息

    JavaScript 获取客户端计算机硬件及系统信息 //系统信息获取 function getSysInfo() { var locator =new ActiveXObject ("Wb ...

  8. springboot actuator_Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控...

    作者:Richard_Yi来源:http://39sd.cn/B2A0B 去年我们项目做了微服务1.0的架构转型,但是服务监控这块却没有跟上.这不,最近我就被分配了要将我们核心的微服务应用全部监控起来 ...

  9. android 打印线程信息

    今天,讲讲如何打印线程的id. 用语句: Android.os.Process     //获取当前进程的方法     android.os.Process.getElapsedCpuTime():获 ...

最新文章

  1. Mysql安装及入门
  2. python3 字符串转数组 数组转字符串 切片操作
  3. 我也做了B站UP主!
  4. Boost:bimap双图信息的测试程序
  5. js 小数取整的函数
  6. python后台返回cookie_Django框架设置cookies与获取cookies操作详解
  7. Qt creator5.7 OpenCV249之resize函数(含源码下载)
  8. lazyload 加载
  9. php 复制mysql数据库_PHP连接MySQL数据库的三种方式
  10. 【movable-area、movable-view】 可移动区域组件说明
  11. Why is it called “armature” instead of “skeleton”? or perhaps “rig”?
  12. linux中SPI相关API函数,linux spi驱动开发学习(一)-----spi子系统架构
  13. Changer常用的软件
  14. 北京房租大涨?Python帮你揭穿真相
  15. Chrome下面查看placeholder的样式
  16. 优化USB UVC ISO传输速度
  17. eclipse保存后不会自动编译
  18. tplink迷你路由器中继模式_TP-Link路由器无线中继/桥接设置教程
  19. 游戏服务器租用配置选择攻略(大型端游及中小型网页游戏选型)
  20. IT运维大咖带你玩转企业信息运维自动化

热门文章

  1. 易语言读写配置项ini文件
  2. 微信小程序 倒计时实现
  3. ACM-最短路之中的一个个人的旅行——hdu2066
  4. 外卖(food) 洛谷4040宅男计划 三分套二分贪心
  5. SSH免密码登录设置
  6. XSLT 2.0 in .NET
  7. [翻译] Qt QFtp功能无法被Qt 5 Network系列模块替代的说明
  8. 阿里云开启多媒体搜索新时代,发布全域精准图像搜索
  9. 集合框架源码学习之HashMap(JDK1.8)
  10. 手机端 超链接 识别电话号码