话说线程的四种暂停状态
来源:互联网 发布:中国银河金融控股 知乎 编辑:程序博客网 时间:2024/04/29 22:44
对于线程对象,如果想让其暂时停止,但是恢复运行后又不至于产生一个新的线程对象时,就需要知道如何让线程处于暂停状态了。在java语言中,可通过如下四种方式来实现该功能:
1、sleep()方法
sleep的中文意思是“睡觉”,其主要用来实现让Thread对象“睡觉”,不过在睡觉时设置了一个“闹钟”,时间一到就会恢复到运行就绪态。代码格式为:
Thread.sleep(long millis);
//参数millis用于表示睡眠时间,其单位是千分之一秒,故欲设置sleep 1秒的话,此参数为1000
注:当一个Thread类对象被唤醒后,并非直接进入running状态运行,而是先进入runnable状态等待cpu的调用。
2、yield()方法
对于sleep()方法,线程在指定的时间里肯定不会由running状态转换至runnable状态;而对于yield()方法,线程可能马上由running状态转换至runnable状态。代码格式为:
Thread.yield();
对于一个Thread类对象,如果想让其立即由running状态转换至runnable状态,即立即暂停停止运行,可以调用yield()方法。当调用yield()方法时,会使得cpu从当前的线程对象切换到其他的线程对象。
3、join()方法
当处于runnable状态的线程有多个时,如果线程1需要等待线程2完成某件事后,其才能继续执行下去,这是就需要用到join()方法。代码格式为:
Thread.join();
4、wait()方法
wait的中文意思是“等待”,其主要用来实现让线程进入等待状态,该方法有两种使用方式:
(1)Thread.wait(long millis); //参数millis用来表示等待时间
(2)Thread.wait();
wait()方法一般会与notify()方法配合使用,wait()让线程无限等待直到接收到notify()或notifyAll()方法为止。
wait()方法和join()方法类似,对于join()方法,线程1需要等待线程2完成某件事(运行完毕,自然死亡)后才能自动继续执行下去。而对于wait()方法,同上的线程1和线程2间关系,当线程2完成后必须调用notify()方法来唤醒线程1,才能使线程1继续执行。
(扩展)与sleep()、yield()和join()方法不同,方法wait()、notify()和notifyAll()都是java.lang.Object类的方法,所以任何对象都可以调用这3个方法。
- 话说线程的四种暂停状态
- 线程的暂停状态
- 线程的四种状态
- 线程的四种状态
- 线程的四种状态
- [线程学习]线程的四种状态
- 话说Activity的四种加载模式
- java线程停止、暂停和恢复等状态的控制
- java线程停止、暂停和恢复等状态的控制
- 线程状态切换 退出-暂停-继续
- JAVA 学习十八: 线程的四种状态
- 关于线程暂停或指示线程准备暂停的十种方式介绍
- 多线程基础四(三)、暂停线程
- -线程的暂停和恢复
- 线程暂停问题的解决
- 线程的终止与暂停
- 线程的暂停与重新启动
- 可以暂停的线程池
- struts2.1.6 I18N 08
- 浅析APP
- dreamweaver在onLoad运行RecordsetFind.htm时出错
- Jenkins+Maven+SVN快速搭建持续集成环境
- Q89续
- 话说线程的四种暂停状态
- struts2.1.6 interceptor 09
- ProbeException解决办法:There is no WRITEABLE property named 'id' in class 'java.lang.String'
- JQuery学习-ListBox使用JQuery获取不重复的值添加到TextBox
- 四种数据库ETL模式
- Q89xuxu
- Qt编程推荐网站
- div的链接的颜色
- World Wind 1.4.1学习总结三 .