比如
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
}
}
有什么区别呢?
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
}
}
有什么区别呢?
wait和sleep的关键区别就是锁的释放,wait是释放锁的,所以其他的线程可以调用该类的notifyAll方法来唤醒等待,而sleep是不释放锁的,所以在睡眠期间其他线程不能调用该类的方法。
最烂的写法是用循环,循环是占用CPU时间的,其他线程可能会被阻塞(在单CPU单核的环境下)。
wait所在线程将被搁置,这段时间CPU可以做别的事情(执行其他线程)。wait时间到了后不一定马上打印。效率:wait是多线程,明显效率高于for。其他:for无需处理异常。wait要捕获异常
wait相当于,你在做别的事情,饭熟了妈妈叫你,你就可以去吃了。
for相当于,妈妈让你背10000遍java关键字,背完了再来看饭熟没熟(有可能没熟)。第一种,你用妈妈做饭的时间做了喜欢的事情,而且时间被充分利用。
第二种,你被强制做了无用功,而且做完了饭也不一定熟。