synclrulist.java

来自「很棒的web服务器源代码」· Java 代码 · 共 76 行

JAVA
76
字号
// SyncLRUList.java// $Id: SyncLRUList.java,v 1.7 2000/08/04 09:33:06 ylafon Exp $// (c) COPYRIGHT MIT and INRIA, 1996.// Please first read the full copyright statement in file COPYRIGHT.htmlpackage org.w3c.util ;public class SyncLRUList extends LRUList {    public synchronized void toHead(LRUAble node) {	// First remove it if it's in the list already	_remove(node) ;		// Then link it to the front	node.setNext(head.next) ;	node.setPrev(head) ;	head.next.setPrev(node) ;	head.next = node ;    }    public synchronized void toTail(LRUAble node) {	// First remove it if it's in the list already	_remove(node) ;	// Then link it to the back	node.setPrev(tail.prev);	node.setNext(tail) ;	tail.prev.setNext(node) ;	tail.prev = node ;	    }    private final synchronized void _remove(LRUAble node) {	LRUAble itsPrev, itsNext ;	itsPrev = node.getPrev() ;	// note assumption: if its prev is not null, neither is its next	if(itsPrev==null) return ;	itsNext = node.getNext() ;	itsPrev.setNext(itsNext) ;	itsNext.setPrev(itsPrev) ;    }    public final synchronized LRUAble remove(LRUAble node) {	_remove(node) ;	node.setNext((LRUAble) null) ;	node.setPrev((LRUAble) null) ;	return node ;    }    public final synchronized LRUAble getTail() {	LRUAble prev = tail.prev ;	return (prev == head) ? null : prev ;    }    public final synchronized LRUAble getHead() {	LRUAble next = head.next ;	return (next == tail) ? null : next ;    }    public final synchronized LRUAble removeTail() {	if ( tail.prev != head )	    return remove(tail.prev) ;	return null;    }    public final synchronized LRUAble getNext(LRUAble node) {	LRUAble next = node.getNext();	return ((next == tail) || (next == head)) ? null : next;    }    public final synchronized LRUAble getPrev(LRUAble node) {	LRUAble prev = node.getPrev();	return ((prev == tail) || (prev == head)) ? null : prev;    }}

⌨️ 快捷键说明

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