线程 - wait、await 区别

wai()是Object类提供的,一般与synchronized联合使用。调用wait之后会释放锁,导致线程等待。唤醒进程使用notify()或者notifyAll()。

await()Condition类是当中的,一般与Lock联合使用。

举例

synchronized(obj){
 obj.wait();//消费方没东西了,等待
}

synchronize(obj){ 
    obj.notify();//有东西了,唤醒 消费进程
}

而Lock则是由Lock控制锁,Condition来控制被阻塞线程

// 消费者
lock.lock();
condition.await();
lock.unlock();

//生产者
lock.lock(); 
condition.signal(); 
lock.unlock();
发布了1005 篇原创文章 · 获赞 1889 · 访问量 89万+

猜你喜欢

转载自blog.csdn.net/Dream_Weave/article/details/105531780