概述
1.引子
在java多线程并发编程中,有八大基础核心。考考你:
看看都有哪八大基础核心呢?它们分别是:
1.创建线程的方式
2.线程启动
3.线程停止
4.线程生命周期
5.线程相关的方法
6.线程相关的属性
7.线程异常处理
8.线程安全
今天我们从第六个基础核心开始:线程相关属性
2.考考你
#前情回顾
在我们日常多线程编程中,需要关心线程的线程优先级有:
线程Id
线程名称
是否是守护线程
线程优先级
#考考你
1.你知道线程Id的作用吗?
2.你知道线程名称的作用吗?
3.你知道什么是守护线程吗?
4.你知道守护线程与用户线程的区别吗?
5.你知道有哪些线程优先级吗?
6.你知道为什么我们在实际开发中,不应该依赖线程优先级吗?
3.案例
3.1.线程Id
简述:
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.我们知道线程Id是从1依次递增的
2.那么主线程main的编号是1,为什么我们创建的新线程编号不从2开始?
3.2.线程名称
简述:
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());
}
}
4.讨论分享
#考考你答案
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线程优先级映射到操作系统内核会不一样,因此我们不应该依赖线程的优先级
最后
以上就是魁梧墨镜为你收集整理的java thread属性_线程八大基础核心六(线程属性)的全部内容,希望文章能够帮你解决java thread属性_线程八大基础核心六(线程属性)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复