线程八大基础核心六(线程属性)
Posted itall
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程八大基础核心六(线程属性)相关的知识,希望对你有一定的参考价值。
在java多线程并发编程中,有八大基础核心。考考你: 看看都有哪八大基础核心呢?它们分别是: 1.创建线程的方式 2.线程启动 3.线程停止 4.线程生命周期 5.线程相关的方法 6.线程相关的属性 7.线程异常处理 8.线程安全 今天我们从第六个基础核心开始:线程相关属性
#前情回顾 在我们日常多线程编程中,需要关心线程的线程优先级有: 线程Id 线程名称 是否是守护线程 线程优先级 #考考你 1.你知道线程Id的作用吗? 2.你知道线程名称的作用吗? 3.你知道什么是守护线程吗? 4.你知道守护线程与用户线程的区别吗? 5.你知道有哪些线程优先级吗? 6.你知道为什么我们在实际开发中,不应该依赖线程优先级吗?
简述:
1.线程Id,是线程的唯一身份标识
2.用于JVM执行过程中,识别线程
package com.anan.thread.threadproperty; /** * 线程属性:Id * 1.线程Id,是线程的唯一身份标识 * 2.用于JVM执行过程中,识别线程 */ public class ThreadIdDemo { public static void main(String[] args) { // 创建线程对象 Runnable r1 = new MyRunnable(); Thread t1 = new Thread(r1); t1.start(); // 打印主线程main的Id System.out.println("【主】线程Id:" + Thread.currentThread().getId()); } } /** * 实现Runnable接口,创建线程 */ class MyRunnable implements Runnable{ public void run() { System.out.println("【子】线程Id:" + Thread.currentThread().getId()); } }
简述:
1.线程名称,可以在创建线程对象的时候设置(有默认名称)
2.用于在开发过程中,方便调试,或者友好阅读
package com.anan.thread.threadproperty; import java.util.concurrent.TimeUnit; /** * 线程属性:Id * 1.线程名称,可以在创建线程对象的时候设置(有默认名称) * 2.用于在开发过程中,方便调试,或者友好阅读 */ public class ThreadNameDemo { public static void main(String[] args) throws InterruptedException{ // 创建两个线程对象 Runnable r1 = new MyRunnable1(); // 使用默认线程名称 Thread t1 = new Thread(r1); t1.start(); // 休眠1秒,实现顺序打印 TimeUnit.SECONDS.sleep(1); // 指定线程名称 Thread t2 = new Thread(r1,"my-thread-2"); t2.start(); } } /** * 实现Runnable接口,创建线程 */ class MyRunnable1 implements Runnable{ public void run() { System.out.println("线程名称:" + Thread.currentThread().getName()); } }
#考考你答案 1.你知道线程Id的作用吗? 1.1.线程Id,是线程的唯一身份标识 1.2.用于JVM执行过程中,识别线程 2.你知道线程名称的作用吗? 2.1.线程名称,可以在创建线程对象的时候设置(有默认名称) 2.2.用于在开发过程中,方便调试,或者友好阅读 3.你知道什么是守护线程吗? 3.1.守护线程,是在后台运行的线程 4.你知道守护线程与用户线程的区别吗? 4.1.我们平常开发,创建的都是用户线程 4.2.守护线程,与用户线程总体没有区别 4.3.区别在于: 4.3.1.守护线程,不会影响JVM的退出执行 4.3.2.用户线程,当JVM退出的时候,需要等待用户线程执行完成 5.你知道有哪些线程优先级吗? 5.1.线程优先级,表示获取CPU执行时间机会的多少,优先级越高,越有机会 5.2.在java编程语言中,总共有10种优先级设置: 最小优先级:1 默认优先级:5 最大优先级:10 6.你知道为什么我们在实际开发中,不应该依赖线程优先级吗? 6.1.原因一: java的线程,是基于操作系统内核线程实现 6.2.原因二: 不同的操作系统,优先级定义不一样 6.3.原因三: 在不同的操作系统上,java线程优先级映射到操作系统内核会不一样,因此我们不应该依赖线程的优先级
以上是关于线程八大基础核心六(线程属性)的主要内容,如果未能解决你的问题,请参考以下文章