比如 
public class A{
public int aa(){
//do something
wait(500);
//do other thing
}
}与public class A{
public int aa(){
//do something
for(int i=0;i<39999;i++)
int product = product*i;//这里主要就是想停顿一会,或者我可以构造一个没用的大字符串
//do other thing
}
}
有什么区别呢?

解决方案 »

  1.   

    Thread.sleep(500)  //单位为毫秒
      

  2.   

    CPU占用率应该不同吧,下面那个CPU占用率比较高
      

  3.   

    循环是要占资源的;wait是要抛出InterruptedException异常;wait用于多线程
      

  4.   

    wait的写法明显错误,wait和notifyAll必须写在synchronized块中。
    wait和sleep的关键区别就是锁的释放,wait是释放锁的,所以其他的线程可以调用该类的notifyAll方法来唤醒等待,而sleep是不释放锁的,所以在睡眠期间其他线程不能调用该类的方法。
    最烂的写法是用循环,循环是占用CPU时间的,其他线程可能会被阻塞(在单CPU单核的环境下)。
      

  5.   

    for循环耗掉的时间不是你能控制的吧
      

  6.   

    假如for和wait的下一句是Sysem.out.println("World Cup!");那么for和wait的效果都可以使打印推迟。区别:for所在线程的执行不可被打断,CPU将被该线程一直独占(假设for中间没有sleep,yield等等之类的等等待的话),for结束之后可能立即打印
          wait所在线程将被搁置,这段时间CPU可以做别的事情(执行其他线程)。wait时间到了后不一定马上打印。效率:wait是多线程,明显效率高于for。其他:for无需处理异常。wait要捕获异常
          
      

  7.   

    妈妈在做饭,你等着吃饭。
    wait相当于,你在做别的事情,饭熟了妈妈叫你,你就可以去吃了。
    for相当于,妈妈让你背10000遍java关键字,背完了再来看饭熟没熟(有可能没熟)。第一种,你用妈妈做饭的时间做了喜欢的事情,而且时间被充分利用。
    第二种,你被强制做了无用功,而且做完了饭也不一定熟。