求教各位达人,假设有这样一个场景:线程A在start之后去查询某个条件,发现条件不满足,于是sleep 10秒,意图是10秒之后再去查询一次这个条件,如果还不满足,则执行某种操作,否则执行另一种操作。
另外有一个线程B,它可能去操作某些数据,使线程A查询的条件由不满足变为满足。我想问的是,如果A已经进入sleep了,但是还没到10秒,例如才只有2秒的时候,线程B修改了条件,使A的查询条件满足,那么能否通过某种方式让A立即醒过来而不必傻等10秒结束再醒?
notify方法能否让A提前醒过来?
另外有一个线程B,它可能去操作某些数据,使线程A查询的条件由不满足变为满足。我想问的是,如果A已经进入sleep了,但是还没到10秒,例如才只有2秒的时候,线程B修改了条件,使A的查询条件满足,那么能否通过某种方式让A立即醒过来而不必傻等10秒结束再醒?
notify方法能否让A提前醒过来?
或wait(10*1000)与notifyAll配合使用
run()
{
if(如果不符合条件){
B b= new B();
b.start();
b.jion();
} }
}
如果用wait,那当然就要配合使用notify
还是wait的好