mobjectpool.java

来自「httptunnel.jar httptunnel java 源码」· Java 代码 · 共 75 行

JAVA
75
字号
package net.jumperz.util;

import java.util.*;

public class MObjectPool
{
private LinkedList objectQueue = new LinkedList();
private LinkedList threadQueue = new LinkedList();
//--------------------------------------------------------------------------------
public void addToPool( Object o )
{
objectQueue.addLast( o );
}
//--------------------------------------------------------------------------------
public Object getObject()
{
while( true )
	{
	synchronized( objectQueue )
		{
		if( !objectQueue.isEmpty() )
			{
			Object o = objectQueue.getFirst();
			objectQueue.removeFirst();
			return o;
			}
		}

	Thread currentThread = Thread.currentThread();
	
	synchronized( threadQueue )
		{
		threadQueue.addLast( currentThread );
		}
	
	synchronized( currentThread )
		{
		try
			{
			currentThread.wait();
			}
		catch( InterruptedException e )
			{
			e.printStackTrace();
			return null;
			}
		}
	}
}
//--------------------------------------------------------------------------------
public void returnObject( Object o )
{
synchronized( objectQueue )
	{
	objectQueue.addLast( o );
	}

Thread wakenedThread = null;
synchronized( threadQueue )
	{
	if( threadQueue.isEmpty() )
		{
		return;
		}
	wakenedThread = ( Thread )threadQueue.getFirst();
	threadQueue.removeFirst();
	}

synchronized( wakenedThread )
	{
	wakenedThread.notify();
	}
}
//--------------------------------------------------------------------------------
}

⌨️ 快捷键说明

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