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

📄 blockedchannel.java

📁 这是一款应用程序与数据库联接
💻 JAVA
字号:
/* ===========================================================
 * JDBMonitor : a flexiable JDBC Monitor for the Java(tm) platform
 * ===========================================================
 *
 * (C) Copyright 2006-2006, by yang zhongke
 *
 * Project Info:  http://www.cownew.com
 *
 * This library is free software; you can redistribute it and/or modify it 
 * under the terms of the GNU Lesser General Public License as published by 
 * the Free Software Foundation; either version 2.1 of the License, or 
 * (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful, but 
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
 * License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
 * USA.  
 *
 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
 * in the United States and other countries.]
 *
 * ---------------
 * BlockedChannel.java
 * ---------------
 * (C) Copyright 2006-2006, by yang zhongke
 *
 * Original Author:  yang zhongke;
 *
 * Changes
 * -------
 *
 */
package com.cownew.JDBMonitor.common;

import java.util.Stack;

/**
 * a blocked channel,producer offer product ,consumer take the product,
 * the consumer will wait if there isn't any products
 * @author yang zhongke
 */
public class BlockedChannel implements IChannel
{
	private Stack container = null;

	public BlockedChannel()
	{
		super();
		container = new Stack();
	}

	/**
	 * producer offer the product
	 * @param obj the product
	 * @throws InterruptedException
	 */
	public synchronized void offer(Object obj) throws InterruptedException
	{
		container.push(obj);
		this.notifyAll();
	}

	/**
	 * consumer take then product
	 * if no product exists, the thread will be blocked
	 * @return the product
	 * @throws InterruptedException
	 */
	public synchronized Object take() throws InterruptedException
	{
		if (container.isEmpty())
		{
			wait();
		}
		Object obj = container.pop();
		return obj;
	}

	/**
	 * whether there is products
	 * @return
	 */
	public boolean isEmpty()
	{
		return container.isEmpty();
	}

}

⌨️ 快捷键说明

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