java thread属性_线程八大基础核心六(线程属性)

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());

}

}

a024861af7c3e4d9818677c31f236953.png

彩蛋:

1.我们知道线程Id是从1依次递增的

b5a791ceadf086d8e0c3f39b20a73920.png

2.那么主线程main的编号是1,为什么我们创建的新线程编号不从2开始?

4809ee7920fdb05363d6483582a78a93.png

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());

}

}

49b3112bab147cc7f4456184773c2306.png

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线程优先级映射到操作系统内核会不一样,因此我们不应该依赖线程的优先级

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值