Java - 线程的属性和方法(sleep()、interrupt()中断线程、 join()控制线程顺序)

Thread类是JVM用来管理线程的一个类,每个线程都有唯一的一个Thread对象与之关联。JVM使用一些属性描述线程对象,用一些类方法管理对象。

目录

一、线程的属性

二、 线程的方法

1.  线程的构造方法

2. 获取线程对象

3. sleep方法

4. 中断线程

5. join控制多线程顺序

🔊 join()总结   


一、线程的属性

属性 获取方法
ID getId()
名称 getName()
状态 getState()
优先级 getPriority()
是否为后台线程 isAlive()

是否存活

isDaemon()
是否中断 isInterrupted()
  • 线程的ID

获取到的是线程在JVM中的身份标识,是线程的唯一标识,不同线程不会重复

注意理解“唯一”的含义。

内核的PCB、用户态的线程库、JVM中,只要用到线程且需要对其进行管理的地方,都会对线程进行身份标识。三个标识各不相同,但目的一样。每个地方的身份标识都是唯一的。

  • 线程的名称

在Thread构造方法里取的名字

  • 线程的状态

获取线程当前处于就绪还是运行等其他状态,是JVM当中设立的状态

(JVM中的线程有6种,具体类别以及状态转换会在另一篇博客中总结~ )

  • 线程优先级

获取到线程调度的优先级 

 获取 ID、名称、状态、优先级代码示例: 

public class demo1 {
    public static void main(String[] args) throws InterruptedException {
        Thread thread=new Thread(()->{
            while(true){
                for(int i=0;i<10;i++){
                    System.out.println("新线程"+i);
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        System.out.println("线程创建前状态: "+thread.getState());
        thread.start();
        //Thread.sleep(500);
        System.out.println("线程创建后状态: "+thread.getState());
        System.out.println(thread.getPriority());
        System.out.println( thread.getName());
        System.out.println(thread.getId());
    }
}
  • 线程是否为后台线程

线程分为前台线程和后台线程,后台线程又称守护线程。我们常说的主线程就是前台线程。

前台线程的结束决定进程是否结束。不管后台线程如何,前台线程全部结束,进程就结束。

创建出来的线程默认也是前台线程,不过通过设置 thread.setDaemon(true) 可以将前台线程转变为后台线程。

代码示例: 

public class demo1 {
    public static void main(String[] args) {
        Thread thread=new Thread(()->{
            while(true){
                for(int i=0;i<10;i++){
                    System.out.println("新线程"+i);
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        thread.setDaemon(true);
        //不设置thread.setDaemon(true),主线程运行结束时,新线程thread一直在运行
        //设置thread.setDaemon(true)后,主线程运行结束,进程直接结束
        //注意:必须 要在创建线程之前 就将thread设置为后台线程
        thread.start();
        System.out.println(thread.isDaemon());
    }
}

运行截图:

  • 线程是否存活
  • 线程是否被中断

获取到线程当前是否被中断

二、 线程的方法

1.  线程的构造方法

方法1&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值