A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李爱霞 黑马帝   /  2011-12-29 21:31  /  2337 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李爱霞 于 2011-12-30 08:24 编辑

sleep() 和 wait() 他们之间到底有什么区别,怎么合理的使用这个两个方法呀????

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

5 个回复

倒序浏览
赵玮 黑马帝 2011-12-29 21:43:26
沙发
sleep()是线程类的方法。使线程停止一段时间的方法
wait()是Object方法。使线程暂停执行。

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

回复 使用道具 举报
刘健 黑马帝 2011-12-29 21:43:30
藤椅
sleep()是线程暂时休眠,主要用在线程需要自动间隔一段时间运行
wait()是线程等待,线程暂不执行,直到唤醒才会继续执行
回复 使用道具 举报
陈浩 黑马帝 2011-12-29 21:45:19
板凳
    Java中的多线程是一种抢占式的机制而不是分时机制。线程主要有以下几种状态:可运行,运行,阻塞,死亡。抢占式机制指的是有多个线程处于可运行状态,但是只有一个线程在运行。 当有多个线程访问共享数据的时候,就需要对线程进行同步。线程中的几个主要方法的比较:
Thread类的方法:sleep(),yield()等
Object的方法:wait()和notify()等
   每个对象都有一个机锁来控制同步访问。Synchronized关键字可以和对象的机锁交互,来实现线程的同步。由于sleep()方法是Thread类的方法,因此它不能改变对象的机锁。所以当在一个Synchronized方法中调用sleep()时,线程虽然休眠了,但是对象的机锁没有被释放,其他线程仍然无法访问这个对象。而wait()方法则会在线程休眠的同时释放掉机锁,其他线程可以访问该对象。

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

回复 使用道具 举报
wait()在其他线程调用此对象的notify()方法或notifyAll()方法前,导致当前线程等待
wait(long timeout)
          在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。
wait(long timeout, int nanos)
          在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。
sleep(long millis)
          在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。
sleep(long millis, int nanos)
          在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

回复 使用道具 举报
love风之吻浩 发表于 2011-12-29 21:45
Java中的多线程是一种抢占式的机制而不是分时机制。线程主要有以下几种状态:可运行,运行,阻塞,死亡 ...

谢谢!学习啦!希望大家多多关照
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马