多线程的常用属性和常用方法(守护线程休眠线程)

1.多线程的常用属性

属性 获取⽅法
ID getId()
名称 getName()
状态 getState()
优先级 getPriority()
是否守护(后台)线程 isDaemon()
是否存活 isAlive()
是否被中断 isInterrupted()

ID 是线程的唯⼀标识,不同线程不会重复
名称是各种调试⼯具⽤到
状态表示线程当前所处的⼀个情况,下⾯我们会进⼀步说明
优先级⾼的线程理论上来说更容易被调度到
关于守护线程(后台线程),需要记住⼀点:JVM会在⼀个进程的所有⾮后台线程结束后,
才会结束运⾏。
是否存活,即简单的理解,为 run ⽅法是否运⾏结束了
线程的中断问题,下⾯我们进⼀步说明

2.守护线程

线程中的分类:
⽤户线程
守护线程(后台线程)
守护线程是为⽤户线程服务的,⽤户线程全部结束之后,守护线程会跟随结束。

JVM 中的垃圾回收器就是典型的守护线程,程序运⾏的时候它也运⾏,当满⾜条件是进⾏垃圾回收,当所有线程执⾏完任务终⽌时它也会随着退出。

线程中的长用方法

1.线程终⽌

⽬前常⻅的有以下两种⽅式:

  1. 通过⾃定义标记符来进⾏中断。
  2. 调⽤ interrupt() ⽅法来中断。

2. 线程等待 join

⽅法 说明
public void join() 等待线程结束
public void join(long millis) 等待线程结束,最多等 millis 毫秒
public void join(long millis, int nanos) 同理,但可以更⾼精度

3. yield 让出执⾏权

Thread.yield();

4. 获取当前线程

public static Thread currentThread();

5. 休眠当前线程

public class ThreadDemo {
    public static void main(String[] args) throws InterruptedException {
        System.out.println(System.currentTimeMillis());
        Thread.sleep(3 * 1000);
        System.out.println(System.currentTimeMillis());
   }
}

使⽤ TimeUnit 休眠
底层还是通过sleep实现的,但是不容易出错

TimeUnit.DAYS.sleep(1);//天
TimeUnit.HOURS.sleep(1);//⼩时
TimeUnit.MINUTES.sleep(1);//分
TimeUnit.SECONDS.sleep(1);//秒
TimeUnit.MILLISECONDS.sleep(1000);//毫秒
TimeUnit.MICROSECONDS.sleep(1000);//微妙
TimeUnit.NANOSECONDS.sleep(1000);//纳秒
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值