Java中notify()和notifyAll()之间的区别
notify和notifyAll都是线程类的方法,用于为线程提供通知。但是这两种方法之间存在一些显着差异,我们将在下面讨论。
以下是notify和notifyAll之间的重要区别。
notify()方法,则将通知仅发送到多个等待锁定的等待线程中的一个线程。notifyAll()在相同上下文中的方法将通知发送给所有等待线程,而不是单个线程。notify()方法的情况下,线程丢失的风险很高,因为仅向单个线程发送通知,而如果错过了发送通知,则其他线程将不会收到任何通知,因此没有锁。notify()方法的情况下,图片中只有一个线程,因此没有线程可互换的概念。notifyAll(),如果你所有的等待线程可以互换(他们醒来doesnâTM顺序牛逼事)。notify与notifyAll的示例
线程A.java
示例
public class ThreadA {
public static void main(String[] args){
ThreadB b = new ThreadB();
b.start();
synchronized(b){
try{
System.out.println("Waiting for b to complete...");
b.wait();
}
catch(InterruptedException e){
e.printStackTrace();
}
System.out.println("Total is: " + b.total);
}
}
}
class ThreadB extends Thread{
int total;
public void run(){
synchronized(this){
for(int i=0; i<100 ; i++){
total += i;
}
notify();
}
}
}输出结果
Waiting for b to complete... Total is: 4950
热门推荐
10 空军大学开学祝福语简短
11 入伙英文祝福语大全简短
12 幼儿祝福语押韵句子简短
13 校长退休文案祝福语简短
14 迎接朋友蛋糕祝福语简短
15 简短大气的狗年祝福语
16 喜得新房文案祝福语简短
17 诗词送行祝福语大全简短
18 祝球员赛前祝福语简短