程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java�е�notyfy()��notifyAll()�ı�������

Java�е�notyfy()��notifyAll()�ı�������

編輯:關於JAVA

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���л��ҶԽű�֮����վ��֧�֣�

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved