Java并发基础:Thread类常用方法

Java线程有6种状态:

新建状态 (NEW):创建了一个新的线程对象,并没有运行。
就绪状态 (RUNNABLE):可运行线程的线程状态。处于可运行状态的线程正在Java虚拟机中执行(运行状态),但它可能正在等待来自操作系统(如处理器)的其他资源(操作系统中的部分阻塞状态情况)。
阻塞状态 (BLOCKED):线程正在等待监视器锁,而陷入的状态。
等待状态 (WAITING):当前线程需要等待其他线程做出一些的特定的动作(通知或中断)。
超时等待状态 (TIMED_WAITING):区别于WAITING,它可以在指定的时间自行返回。
终止状态 (TERMINATED):线程执行完成。

Thread类常用方法

1.Thread.sleep():是Thread类中的静态方法,当一个执行中的线程调用了Thread的sleep()方法后,调用线程会暂时让出时间的执行权,转为Timed_Waiting状态,这期间不参与cpu的调度,但是该线程不释放已持有的锁。sleep时间到了,线程会转为就绪状态,然后参与cpu调度,获取到cpu资源之后就可以运行。

如果在睡眠期间,其他线程调用了该线程的interrupt()的方法中断了该线程,则该线程会抛出InterruptedException异常而返回。

2.Thread.yeild():使当前线程由执行状态,变成为就绪状态,主动让出CPU,在下一个线程执行时候,此线程有可能被执行,也有可能没有被执行,由任务调度器最终决定。

3.Thread.join(): 使当前线程等待某个线程完成,可以指定等待的时间。

4.Thread.interrupt:打断线程,如果被打断的线程正在执行Thread.sleep/join/wait方法,则会抛出InterruptedException,但被打断线程并不会终止运行;如果被打断的线程处于运行状态,则其打断标记会被置为True(可以通过isInterrupted()方法查看),之后有被打断线程自主决定是否终止运行。
打断标记为true时,会导致LockSupport.park()方法失效!

查看线程是否被打断过的方法的区别:

isInterrupted()interrupted()
实例方法静态方法
不会清除线程的打断标记会清除现成的打断标记
本质是调用isInterrupted(false)本质是调用isInterrupted(true)

5.Thread.start():内部会调用本地方法start0(),创建新的线程,并执行线程的run()方法。

6.Thread.run(): 会由主线程调用该线程的run()方法,不会创建新的线程。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值