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

📄 shellpool.java

📁 实现LRU算法的Cache源代码
💻 JAVA
字号:
package com.dw.system.cache ;

import java.io.* ;
import java.util.* ;

/**
 * 根据测试,对于简单的类创建不适合用该池进行处理
 *
 */
public class ShellPool
{
	 private Vector avail , busy ;

	 public ShellPool ()
	 {
		  avail = new Vector () ;
		  busy = new Vector () ;
	 }

	 public ShellPool (int initnum)
	 {
		  this () ;
		  for (int i = 0 ; i < initnum ; i ++)
			   avail.addElement (new Shell()) ;
	 }

	 //public abstract
	 public synchronized Shell getShell ()
	 {
		  if (!avail.isEmpty())
		  {
			   Shell exShell = (Shell)avail.lastElement () ;
			   int lastIndex = avail.size() - 1 ;
			   avail.removeElementAt (lastIndex) ;

			   busy.addElement (exShell) ;
			   return (exShell) ;
		  }
		  else
		  {
			   //if (total < max)
			   Shell newShell = new Shell () ;
			   busy.addElement (newShell) ;
			   return newShell ;
		  }
	 }

	 public synchronized void freeShell (Shell sh)
	 {
		  sh.clear () ;

		  busy.removeElement (sh) ;
		  avail.addElement (sh) ;
	 }
	 /*
	 public static void main (String[] args)
	 {
		  ShellPool sp = new ShellPool (10000) ;
		  int i ;
		  long s,e ;
		  Shell tmpsh ;
		  s = System.currentTimeMillis () ;
		  for (i = 0 ; i < 10000 ; i ++)
			   tmpsh = new Shell () ;
		  e = System.currentTimeMillis () ;

		  System.out.println ("Not use shell pool cost="+(e-s)) ;
		  //=0
		  s = System.currentTimeMillis () ;

		  for (i = 0 ; i < 10000 ; i ++)
			   tmpsh = sp.getShell () ;
		  e = System.currentTimeMillis () ;
		  System.out.println ("Using shell pool cost="+(e-s)) ;
		  //=20
	 }*/
}

⌨️ 快捷键说明

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