李敏  
日历
<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
统计
  • 随笔 - 1
  • 文章 - 40
  • 评论 - 4
  • 引用 - 0

导航

常用链接

留言簿(1)

文章分类

文章档案

相册

收藏夹

它山之石

聚贤庄

搜索

  •  

最新评论

 

import java.util.*;

class Test{
 
  public void run(){
    Queen queen=new Queen();
   
    QueenThread qt=new QueenThread(queen);
   
    new Thread(qt).start();
   
    new Thread(qt).start();
  }
 
  public static void main(String[]args){
    new Test().run();
  }
}

class Queen{
 private final Object objects[]=new Object[10];
 private int pushIndex=0;
 private int popIndex=0;
 
 public synchronized void push(Object object){
   if(pushIndex>=objects.length){
     System.out.println(Thread.currentThread().getName()+" queen is over,push fail!");
   }else
     objects[pushIndex++]=object;
 }
 
 public synchronized Object pop(){
   if(popIndex>=objects.length){
     System.out.println(Thread.currentThread().getName()+" queen is empty,pop fail!");
   }else{
     Object object=objects[popIndex];
 
     objects[popIndex++]=null;
    
     Thread.yield();
 
     return object;
   }
   return null;
 }
}

class QueenThread implements Runnable{
  private static int id=0;
  private Queen queen;
 
  public QueenThread(Queen queen){
    this.queen=queen;
  }
 
  public void run(){
    String object=null;

      for(int i=0;i<10;i++){
     
        queen.push(Thread.currentThread().getName()+" "+id);
       
        id++;
     
        try{
         Thread.sleep(2000);
        }catch(InterruptedException e){
          e.printStackTrace();
        }

        object=(String)queen.pop();
       
        if(object!=null)
        System.out.println(Thread.currentThread().getName()+" |"+object);
      }    
  }
}

posted on 2009-07-18 17:47 李敏 阅读(126) 评论(0)  编辑  收藏 所属分类: 算法

只有注册用户登录后才能发表评论。


网站导航:
 
 
Copyright © 李敏 Powered by: 博客园 模板提供:沪江博客