Java�е�notyfy()��notifyAll()�ı�������。本站提示廣大學習愛好者:(Java�е�notyfy()��notifyAll()�ı�������)文章只能為提供參考,不一定能成為您想要的結果。以下是Java�е�notyfy()��notifyAll()�ı�������正文
wait()������ʾ��������ǰ����Դ��ռ��Ȩ���Ȱ��Ȱ���һֱ�ȵ�����֪ͨ�ң��ҲŻ����к���Ĵ��롣
notify()������ʾ����ǰ���߳��Ѿ���������Դ��ռ�У�
֪ͨ�ȴ����߳�����ö���Դ��ռ��Ȩ������ֻ��һ���߳��ܹ���wait״̬�лָ���
Ȼ���������wait()�������䣻
notifyAll()������ʾ����ǰ���߳��Ѿ���������Դ��ռ�У�
֪ͨ���еĵȴ��̴߳�wait()���������俪ʼ���С�
����ʲô����û�У�
�����ӣ�����һ��nofiyAll()�����ӣ�
Java����
package com.thread.wait;
public class Wait {
private int counter = 0;
private String name = null;
public Wait(int counter,String name){
this.counter = counter;
this.name = name;
}
public synchronized void doSomthing(){
int tempCounter = --counter;
if(tempCounter <= 0){
customizedNotifyAll();
}
else
{
while(tempCounter > 0){
try {
System.out.println(Thread.currentThread().getName()+"-<"+name+tempCounter+">"+"will invoke WAIT()");
--tempCounter;
wait();
} catch (InterruptedException e) {
e.printStackTrace();
notifyAll();
}
System.out.println(Thread.currentThread().getName()+"-<"+name+tempCounter+">"+"has been ACTIVED");
}
customizedNotifyAll();
}
}
public void customizedNotifyAll(){
notifyAll();
System.out.println(Thread.currentThread().getName()+"-<"+name+counter+">"+"::"+"INVOKED NOTIFYALL() AND FINISHED");
}
}
Java����
package com.thread.wait;
public class TestThread implements Runnable {
private Wait wait;
public TestThread(Wait wait){
this.wait = wait;
}
public void run() {
wait.doSomthing();
}
public static void main(String [] args){
Wait wait = new Wait(4,"DAVID");
Thread t1 = new Thread(new TestThread(wait));
Thread t2 = new Thread(new TestThread(wait));
Thread t3 = new Thread(new TestThread(wait));
Thread t4 = new Thread(new TestThread(wait));
t1.start();
t2.start();
t3.start();
t4.start();
}
}
���еĽ����
Thread-0-<DAVID3>will invoke WAIT() Thread-1-<DAVID2>will invoke WAIT() Thread-2-<DAVID1>will invoke WAIT() Thread-3-<DAVID0>::INVOKED NOTIFYALL() AND FINISHED Thread-0-<DAVID2>has been ACTIVED Thread-0-<DAVID2>will invoke WAIT() Thread-1-<DAVID1>has been ACTIVED Thread-1-<DAVID1>will invoke WAIT() Thread-2-<DAVID0>has been ACTIVED Thread-2-<DAVID0>::INVOKED NOTIFYALL() AND FINISHED Thread-0-<DAVID1>has been ACTIVED Thread-0-<DAVID1>will invoke WAIT() Thread-1-<DAVID0>has been ACTIVED Thread-1-<DAVID0>::INVOKED NOTIFYALL() AND FINISHED Thread-0-<DAVID0>has been ACTIVED Thread-0-<DAVID0>::INVOKED NOTIFYALL() AND FINISHED
�����˰ɣ�һ������notifyAll�������������еĵȴ��̶߳���ӵ���wait()�����ĵط���������������
������н������ÿ�ζ���һ������ʱ��ֻ�������߳�������ɶ����������߳��ڵȴ������̵߳���notifyAll()��������ʱ��ֻ�������߳�������ɣ�����һ�����ڵȴ��С�
���ڱ����ǽ���notify�Լ�notifyAll���������Զ������ԭ����Խ��͡�
Ȼ����notify()���������ӣ�
���ǽ�wait���е�customizedNotifyAll()�����е�notifyAll()��������notify()����
������
Thread-1-<DAVID3>will invoke WAIT() Thread-0-<DAVID2>will invoke WAIT() Thread-2-<DAVID1>will invoke WAIT() Thread-3-<DAVID0>::INVOKED NOTIFYALL() AND FINISHED Thread-1-<DAVID2>has been ACTIVED Thread-1-<DAVID2>will invoke WAIT()
Did you see that?���еĵȴ��߳��У�ֻ��һ���߳���������ˣ����������̻߳���ɵɵ�صȴ���poor guys!
ÿ�����еĽ���һ��������ʼ��ֻ��һ���߳��ܹ�������ɡ�
Summary��
notify()����ֻ����һ���̴߳�wait�лָ����������ھ������ĸ����Ǿ͵ÿ���Щ�̵߳�������(���������ȼ��������)������ִ�к������䣻
notifyAll()�����������е��̴߳�wait�лָ�����������ִ�к������䡣
����������С�����ҽ��ܵ�Java�е�notyfy()��notifyAll()�ı�������ϣ���Դ���������������������κ�������������ԣ�С��ἰʱ�ظ���ҵġ��ڴ�Ҳ�dz���л��ҶԽű�֮����վ��֧�֣�