前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >暂停线程-话说线程的四种暂停状态

暂停线程-话说线程的四种暂停状态

作者头像
囍楽云
发布2022-12-29 10:07:22
1.3K0
发布2022-12-29 10:07:22
举报
文章被收录于专栏:囍楽云博客

对于线程对象,如果想让其暂时停止,但是恢复运行后又不至于产生一个新的线程对象时,就需要知道如何让线程处于暂停状态了。在java语言中,可通过如下四种方式来实现该功能:

  1、sleep()方法

  sleep的中文意思是“睡觉”,其主要用来实现让Thread对象“睡觉”,不过在睡觉时设置了一个“闹钟”,时间一到就会恢复到运行就绪态。代码格式为:

  Thread.sleep(long millis);

  //参数millis用于表示睡眠时间,其单位是千分之一秒,故欲设置sleep 1秒的话,此参数为1000

  注:当一个Thread类对象被唤醒后,并非直接进入状态运行,而是先进入状态等待cpu的调用。

  2、yield()方法

  对于sleep()方法,线程在指定的时间里肯定不会由状态转换至状态;而对于yield()方法,线程可能马上由状态转换至状态。代码格式为:

  Thread.yield();

  对于一个Thread类对象,如果想让其立即由状态转换至状态,即立即暂停停止运行暂停线程,可以调用yield()方法。当调用yield()方法时,会使得cpu从当前的线程对象切换到其他的线程对象。

  3、join()方法

  当处于状态的线程有多个时,如果线程1需要等待线程2完成某件事后,其才能继续执行下去,这是就需要用到join()方法。代码格式为:

  Thread.join();

  4、wait()方法

  wait的中文意思是“等待”暂停线程,其主要用来实现让线程进入等待状态,该方法有两种使用方式:

  (1)Thread.wait(long millis); //参数millis用来表示等待时间

  (2)Thread.wait();

  wait()方法一般会与notify()方法配合使用,wait()让线程无限等待直到接收到notify()或()方法为止。

  wait()方法和join()方法类似,对于join()方法,线程1需要等待线程2完成某件事(运行完毕,自然死亡)后才能自动继续执行下去。而对于wait()方法,同上的线程1和线程2间关系,当线程2完成后必须调用notify()方法来唤醒线程1,才能使线程1继续执行。

  (扩展)与sleep()、yield()和join()方法不同,方法wait()、notify()和()都是java.lang.Object类的方法,所以任何对象都可以调用这3个方法。

本文共 558 个字数,平均阅读时长 ≈ 2分钟

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档