Thread.currentThread()方法、进程、线程、多线程相关总结(二)
Thread.currentThread()方法
Thread.currentThread()可以获取当前线程的引用,一般都是在没有线程对象又需要获得线程信息时通过Thread.currentThread()获取当前代码段所在线程的引用。
getId();获取该线程的标识符
getName();获取该线程名称
getState();获取线程状态
boolean isAlive();测试线程是否属于活动状态
boolean isDaemon();测试线程是否为守护线程
boolean isInterrupted();测试线程是否已经中断
public class Demo_1 {public static void main(String[] args){MyThread myThread = new MyThread();myThread.setName("A");myThread.start();}
}class MyThread extends Thread {public MyThread(){System.out.println("------" + "构造函数开始" + "------");System.out.println("Thread.currentThread().getName() = " + Thread.currentThread().getName());System.out.println("Thread.currentThread().getId) = " + Thread.currentThread().getId());System.out.println("Thread.currentThread().isDaemon() = " + Thread.currentThread().isDaemon());System.out.println("Thread.currentThread().isInterrupted()= " + Thread.currentThread().isInterrupted());System.out.println("Thread.currentThread().getState() = " + Thread.currentThread().getState());System.out.println("Thread.currentThread().isAlive() = " + Thread.currentThread().isAlive()); System.out.println("------" + "构造函数结束" + "------");}@Overridepublic void run(){System.out.println("------" + "run()开始" + "------");System.out.println("Thread.currentThread().getName() = " + Thread.currentThread().getName());System.out.println("Thread.currentThread().getId() = " + Thread.currentThread().getId());System.out.println("Thread.currentThread().isDaemon() = " + Thread.currentThread().isDaemon());System.out.println("Thread.currentThread().isInterrupted() = " + Thread.currentThread().isInterrupted());System.out.println("Thread.currentThread().getState() = " + Thread.currentThread().getState());System.out.println("Thread.currentThread().isAlive() = " + Thread.currentThread().isAlive());System.out.println("------" + "run()结束" + "------");}
}
运行结果:
守护线程
守护线程与普通线程表面上并没有什么区别,只需要通过Thread类提供的方法设置即可。
void setDaeMon(boolean c)方法
当参数为true时,该线程为守护线程
守护线程的特点:
当线程中只剩下守护线程时,所有守护线程终止
GC就是运行在一个守护线程上
注意:设置线程为守护线程,要在该线程启动前设置
import java.io.IOException;public class Demo_1 {public static void main(String[] args){MyThread myThread = new MyThread();myThread.setDaemon(true); myThread.start();try {System.in.read(); // 接受输入,使程序在此停顿,一旦接收到用户输入,main线程结束,守护线程自动结束} catch (IOException ex) {}}}class MyThread extends Thread {@Overridepublic void run(){System.out.println("Thread.currentThread().isDaemon() = " + Thread.currentThread().isDaemon());}}
Thread.currentThread()方法、进程、线程、多线程相关总结(二)相关推荐
- 易语言多线程大漠多线程进程线程多线程
进程-线程-多线程 1.进程(process) 狭义定义:进程就是一段程序的执行过程 简单的来讲进程的概念主要有两点: 第一,进程是一个实体.每一个进程都有它自己的地址空间,一般情况下,包括文本区域( ...
- 程序-进程-线程 ( 多线程 )
1.程序 (program) 是为完成特定任务.用某种语言编写的一组指令的集合.即指一段静态的代码,静态的对象. 2.进程 (process) 是程序的一次执行过程,或是正在运行的一个程序.动态过程: ...
- Python_进程/线程/多线程理解
目录 进程.线程.多线程: 1.进程与线程区别 (1)进程与线程区别 (2)多进程与多线程区别 (3)更多区别 2. 进程简单理解 3. 线程简单理解 进程.线程.多线程: 进程:资源分配的最小单位. ...
- 【Java】多线程相关复习—— 线程的创建、名字、运行情况以及顺序控制(join方法) 【一】...
一.创建线程的三种方式 · 继承Thread类 · 实现Runnable接口 · 实现Callable接口 二. 线程状态 · 线程名字 getName() · 线程活动情况 isAlive() · ...
- Java/Android 进程与线程之 多线程开发(二)
多线程开发 Java多线程开发 1.线程状态 线程阻塞 线程协作 作用 **wait() / notify** **join()** **Thread.sleep()** wait 与 sleep 的 ...
- 多线程的三种实现方法、线程类的常见方法、线程安全问题:synchronized和Lock锁、生产者和消费者问题
1. 多线程的三种实现方式 1.1 继承Thread类 实现步骤: 定义一个类MyThread继承Thread类 在MyThread类中重写run()方法 创建MyThread类的对象 启动线程sta ...
- 线程的常用方法——currentThread方法||在main方法中直接调用run()方法,没有开启新的线程,以在run方法中的当前线程就是main线程||启动子线程,子线程会调用run方法
线程的常用方法--currentThread方法 Thread.currentThread()方法可以获得当前线程 Java 中的任何一段代码都是执行在某个线程当中的. 执行当前代码的线程就是当前线程 ...
- 第十章 进程间的通信 之 Java/Android多线程开发(二)
文章目录 (一)Java 多线程开发 1.1)线程状态 1.2)线程控制方法 (1.2.1)Synchronized (1.2.2)Volatile (1.2.3)ReentrantLock 1.3) ...
- JAVA并发与多线程相关面试题总结
JAVA并发与多线程相关面试题总结 1.什么是进程.线程.协程,它们之间的关系是怎样的? 进程: 本质上是一个独立执行的程序,是计算机中的程序关于数据集合上的一次运行活动,进程是操作系统进行资源分配和 ...
- java线程方法_Java线程的三种方式
创建线程有三种方式: 1.继承Thread类 2.实现Runnable接口 3.使用Callable和Future创建线程 三种方式详解如下: ---------------------------- ...
最新文章
- let/var——事实上var的设计可以看成JavaScript语言设计上的错误. 但是这种错误多半不能修复和移除, 以为需要向后兼容.||将let看成更完美的var
- 4.11-固件映像包 ( FIP:Firmware Image Package )简介
- 巧用词语角色:基于目标自适应图的跨目标立场检测
- 启动/删除Docker容器时出现问题 - 如何修复
- Plugin [id: 'org.jetbrains.kotlin.jvm'] was not found in any of the following sources:
- windows-7:系统利用终端cmd命令关机
- python语言的特点强制可读_python程序语言设计第二讲(笔记)
- 我的2017:从工作再到学生
- ActiveMQ(三)——JMS消息结构、JMSReplyTo、面试题(消息丢失,消息重复,消息顺序)
- 批发企业如何使用订单软件app管理账目混乱问题
- 鞋城模板+html,西安锦绣鞋城整合营销策划方案
- 人件札记:软件开发的管理思想
- 汉字录入到计算机的过程,如何快速把书中文字录入到电脑中
- http 高级配置 虚拟主机,https 编译安装
- 30天Python基础(正则表达式)
- 我的知识星球 -【达叔与他的朋友们】程序员
- scum服务器里找不到车,人渣SCUM车辆机制介绍 人渣SCUM车辆为什么消失
- JDBC :java.sql.SQLException: Access denied for user ‘root‘@‘localhost‘ (using password: YES) 数据库登录正常
- getAnnotation(Class.class) 为空问题
- 当我们说“嘿,siri”时,会发生什么?