浅谈Thread类及常见方法与线程的状态(多线程编程篇2)

目录

 前言 

1.Thread类及常见方法

Thread类中常见的属性

1. getId()

2. getName()

3. getState()

4. getPriority()

5. isDaemon()

6. isAlive()

7. isInterrupted()

2.Thread类中常见的方法

Thread.interrupt() (中断线程)

Thread.start()(启动线程)

1. 覆写 run() 方法

2.调用start() 

Thread.join()(等待线程)

3.线程的状态

1. NEW(新建)

2. RUNNABLE(运行中)

3. BLOCKED(阻塞)

4. WAITING(无限等待)

5. TIMED_WAITING(限时等待)

6. TERMINATED(终止)

结尾

 前言 

如何简单的去使用jconsloe 查看线程 (多线程编程篇1)_如何查看weblogic当前线程-优快云博客

距离笔者发布本系列第一篇博客已过去一月有余,本篇博客,笔者将继续介绍已经整理学习好的内容

既帮助未来的自己复习,也为正在阅读的你提供参考和思考.

本篇博客的内容正如标题所示,笔者主要将介绍一下内容

1.Thread类,并通过举例演示常见方法

2.向大家介绍线程的状态.

愿我们一起进步!

1.Thread类及常见方法

首先,需要说明的是,相比于多进程编程,多线程编程能够更有效地利用多核CPU资源。

线程作为进程中的执行单元,它们共享进程的内存空间,因此在创建、调度和销毁时所消耗的资源远少于进程。由于线程之间的开销较小,因此在多个线程之间的调度和切换效率较高。

操作系统内核实现了线程这样的机制 , 并且对用户层提供了一些 API 供用户使用 .
Java 标准库中 Thread 类可以视为是对操作系统提供的 API 进行了进一步的抽象和封装 .降低我们的学习成本
关于如何创建线程,笔者在上文已经介绍过了,笔者常用Lambda表达式去创建实例化一个Thread类

Thread类中常见的属性

如何简单的去使用jconsloe 查看线程 (多线程编程篇1)_如何查看weblogic当前线程-优快云博客

1. getId()

  • 功能:获取线程的唯一标识符(ID),和PID类似。每个线程都有一个唯一的 ID,它是一个正整数。这个ID是JAVA给分配的,不是系统API提供的,更不是PCB中的ID.

  • 用途:可以用来标识不同的线程。

2. getName()

  • 功能:获取线程的名称。每个线程都有一个名字,默认是 Thread-0Thread-1 等,当然也可以通过构造方法手动设置线程名称。

  • 用途:帮助开发者区分不同的线程

3. getState()

  • 功能:获取线程的状态,返回一个 Thread.State 枚举值。

  • 用途:用于查看线程的当前状态

4. getPriority()

  • 功能:获取线程的优先级。

  • 用途:用于控制线程的调度顺序,优先级高的线程会比优先级低的线程更早得到 CPU 时间。

5. isDaemon()

  • 功能:检查线程是否为守护线程(也可以叫做后台线程)(Daemon thread)。守护线程是辅助性线程,在所有非守护线程结束后会自动退出。

  • 用途:判断线程是否为后台线程。守护线程一般用于系统服务或后台任务,如垃圾回收线程。

一般情况下,我们会默认一个线程为前台线程,一个JAVA进程中,如果前台线程没有执行结束,那么整个进程是一定不会结束的,但是后台进程是否结束了,不会影响整个进程的进行

 举一个简单的例子 :

public class Demo2
{
    public static void main(String[] args) {
        Thread y = new Thread(() -> {
            while (true) {
                System.out.println("Test");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                    throw new RuntimeException(e);
                }
            }
        }, "线程一"); // lambda 表达式写法
        y.setDaemon(true); // 设置为后台线程
        y.start(); // 启动线程
    }
}

如果在这里设置成后台线程,那么运行结果如下 


进程已结束,退出代码0

或者 

Test
进程已结束,退出代码0
评论 53
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值