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

📄 producerconsumer.java

📁 这是JavaCC 他是词法语法分析器
💻 JAVA
字号:
/* Copyright (c) 2006, Sun Microsystems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * *     * Redistributions of source code must retain the above copyright notice, *       this list of conditions and the following disclaimer. *     * Redistributions in binary form must reproduce the above copyright *       notice, this list of conditions and the following disclaimer in the *       documentation and/or other materials provided with the distribution. *     * Neither the name of the Sun Microsystems, Inc. nor the names of its *       contributors may be used to endorse or promote products derived from *       this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. */public class ProducerConsumer {  /**   * A single producer-consumer instance that is used by others.   */  public static ProducerConsumer pc = new ProducerConsumer();  /**   * The data structure where the tokens are stored.   */  private java.util.Vector queue = new java.util.Vector();  /**   * The producer calls this method to add a new token   * whenever it is available.   */  synchronized public void addToken(Token token) {    queue.addElement(token);    notify();  }  /**   * The consumer calls this method to get the next token   * in the queue.  If the queue is empty, this method   * blocks until a token becomes available.   */  synchronized public Token getToken() {    if (queue.isEmpty()) {      try {        wait();      } catch (InterruptedException willNotHappen) {        throw new Error();      }    }    Token retval = (Token)(queue.elementAt(0));    queue.removeElementAt(0);    return retval;  }}

⌨️ 快捷键说明

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