⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queue.java

📁 《Java核心技术应用开发》电子工业出版社书籍源代码
💻 JAVA
字号:
package sample;

public class Queue {

  protected Object[] data;
  protected int writeIndex;
  protected int readIndex;
  protected int count;

  public Queue(int size) {
    data = new Object[size];
  }

  public synchronized void write(Object value) {
    while(count >= data.length) {
      try{
        wait();
      }catch(InterruptedException e) {}
    }
    data[writeIndex++] = value;
    System.out.println("write data is: " + value);
    writeIndex %= data.length;
    count += 1;
    notify();
  }

  public synchronized void read() {
    while(count <= 0){
      try{
        wait();
      }catch(InterruptedException e) {}
    }
    Object value = data[readIndex++];
    System.out.println("read data is: " + value);
    readIndex %= data.length;
    count -= 1;
    notify();

  }

  public static void main(String[] args) {
     
     /*
     Queue q = new Queue(5);
     q.write(new Integer(1));
     q.write(new Integer(2));
     q.write(new Integer(3));
     q.write(new Integer(4));
     q.write(new Integer(5));
     //q.write(new Integer(5));
     q.read();
     q.read();
     q.read();
     q.read();
     
     q.write(new Integer(5));
     q.read();
     q.write(new Integer(5));
     */
     Queue q = new Queue(5);
     new Writer(q);
     new Reader(q); 
  }

}


class Writer implements Runnable{

  Queue queue;

  Writer(Queue target){
     queue = target;
     new Thread(this).start();
  }

  public void run(){
     int i = 0;
     while(true){
       queue.write(new Integer(i));
       i++;
     }
  }
 
}

  class Reader implements Runnable{

      Queue queue;

      Reader(Queue source){
        queue = source;
        new Thread(this).start();
      }

      public void run(){
        while(true){
          queue.read();
        }
      }

  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -