Thread类的基本用法

目录

创建线程

启动线程

线程中断

线程等待 

线程休眠

获取线程实例


创建线程

 继承Thread类,重写run()方法

 实现Runnable接口,重写run()方法

 继承Thread类,重写run()方法,使用匿名内部类

 实现Runnable接口,重写run()方法,使用匿名内部类

 使用lambda表达式 

启动线程

调用start()方法启动线程

run()和start()都是Thread类中的方法,run()是线程的执行体,它只是普通的方法调用,不会创建新线程。调用start()方法JVM会创建出一个新线程,并在新线程中主动去调用run()方法,start()方法只能调用一次,通过start()方法创建新线程,从而实现并发编程的效果。

线程中断

在Java中中断一个线程,做法比较唯一,就是让run()方法尽快执行结束

通过isInterrupted()方法获取Thread对象内部的标志位     interrupt()方法把Thread对象内部的标志位设置为true. 通过设置标志位来中断一个线程。

如果线程正在sleep,interrupt()方法可以使sleep内部触发一个异常,从而提前被唤醒。interrupt唤醒线程之后,sleep方法抛出异常之后,同时会自动清除设置好的标志位。 这样设定的目的可以让线程收到中断信号的时候,能够自由决定接下来该如何处理。 

线程等待 

       通过join()实现让一个线程等待另一个线程执行结束,再继续执行。本质上是控制线程执行结束的顺序 。

1.在A线程中执行B.join(),那么A线程就会被阻塞,等待B线程执行结束才开始执行

2.如果线程执行结束,调用join直接就返回了

3.可以通过join(long mills)设置等待的时间,避免死等的现象发生

线程休眠

      调用sleep方法需要手动处理异常。线程会按照设定的时间休眠,但是sleep存在一定的精度误差(ms级) ,线程从阻塞态转换为就绪态会有一个调度的开销,可以忽略不计。

获取线程实例

通过currentThread()获取当前线程对象的引用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值