java中线程概念描述

豆豆网   技术应用频道   2007年10月29日  【字号: 收藏本文

本文详细介绍java中线程概念描述

  六:wait(),notify(),notifyAll()

  首先说明:wait(),notify(),

  notifyAll()这些方法由java.lang.Object类提供,而上面讲到的方法都是由java.lang.Thread类提供(

  Thread类实现了Runnable接口)。

  wait(),notify(),

  notifyAll()这三个方法用于协调多个线程对共享数据的存取,所以必须在synchronized语句块内使用这三个方法。先看下面了例子:

  示例12:

publicclassThreadTestimplementsRunnable{
 publicstaticintshareVar=0;
 publicsynchronizedvoidrun(){
  if(shareVar==0){
   for(inti=0;i<10;i++){
    shareVar++;
    if(shareVar==5){
     try{
      this.wait();
     }
     catch(Exceptione){}
    }
   }
  }
  if(shareVar!=0){
   System.out.print(Thread.currentThread().getName());
   System.out.println("shareVar="+shareVar);
   this.notify();
  }
 }
 publicstaticvoidmain(String[]args){
  Runnabler=newThreadTest();
  Threadt1=newThread(r,"t1");
  10
    Threadt2=newThread(r,"t2");
  t1.start();
  t2.start();
 }
}

  运行结果:

  t2shareVar=5

  t1shareVar=10

  t1线程最先执行。由于初始状态下shareVar为0,t1将使shareVar连续加1,当shareVar的值为5时,t1调用wait()方法,

  t1将处于休息状态,同时释放锁标志。这时t2得到了锁标志开始执行,shareVar的值已经变为5,所以t2直接输出shareVar的值,

责编:豆豆技术应用

正在加载评论...