9、线程睡眠

1、线程睡眠

Thread中的sleep方法可以使当前线程睡眠,线程睡眠后,里面的任务不执行,待睡眠时间过后会自动苏醒,从而继续执行任务

Thread中有两个重载的sleep方法
sleep(long mills),指定睡眠毫秒数
sleep(long mills,int nanos),第一个参数是毫秒,第二个参数是纳秒

Thread.sleep(1000);

2、sleep和wait区别

  • sleep
    Sleep是线程类Thread 的静态方法,它是使当前线程暂时睡眠,可以放在任何位置。Sleep使用的时候,线程并不会放弃对象的使用权,所以在同步方法或同步块中使用sleep,一个线程访问时,其他的线程无法访问。sleep只是暂时休眠一定时间,时间到了之后,自动恢复运行,不需另外的线程唤醒

  • wait
    wait是Object中的方法,其是使当前线程暂时放弃对象的使用权进行等待,必须放在同步方法或同步块里。wait会释放当前线程,放弃对象的使用权,让其他的线程也可以访问。导致当前线程等待,直到另一个线程调用该对象的 notify()方法或notifyAll()方法,或者某些其他线程中断当前线程,或一定量的实时时间

最大区别:
sleep位置随意,睡眠时,保持对象锁,仍然占有改锁,并且其他线程无法访问
wait必须放在同步方法或同步块里,睡眠时,释放对象锁,其他线程可以访问,如未设置时间,且需要其他线程唤醒

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 7,192评论 1 15
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 8,076评论 1 18
  • 林炳文Evankaka原创作品。转载自http://blog.csdn.net/evankaka 本文主要讲了ja...
    ccq_inori阅读 3,880评论 0 4
  • 一扩展javalangThread类二实现javalangRunnable接口三Thread和Runnable的区...
    和帅_db6a阅读 3,392评论 0 1
  • 此片文章主要总结的是Thread类及相关的基础概念和API,首先需要厘清线程调度中的几个基本概念: 一、线程调度的...
    千淘萬漉阅读 7,440评论 0 2