📄 objectrecord.java
字号:
/* * Licensed under the X license (see http://www.x.org/terms.htm) */package org.ofbiz.minerva.pool;import java.util.Date;import java.util.ConcurrentModificationException;/** * Stores the properties of an object in a pool. * * @author Aaron Mulder (ammulder@alumni.princeton.edu) */class ObjectRecord { private long created; private long lastUsed; private Object object; private Object clientObject; private boolean inUse; /** * Created a new record for the specified pooled object. Objects default to * being in use when created, so that they can't be stolen away from the * creator by another thread. */ public ObjectRecord(Object ob) { this(ob, true); } /** * Created a new record for the specified pooled object. Sets the initial * state to in use or not. */ public ObjectRecord(Object ob, boolean inUse) { created = lastUsed = System.currentTimeMillis(); object = ob; this.inUse = inUse; } /** * Gets the date when this connection was originally opened. */ public Date getCreationDate() { return new Date(created); } /** * Gets the date when this connection was last used. */ public Date getLastUsedDate() { return new Date(lastUsed); } /** * Gets the time (in milliseconds) since this connection was last used. */ public long getMillisSinceLastUse() { return System.currentTimeMillis() - lastUsed; } /** * Tells whether this connection is currently in use. This is not * synchronized since you probably want to synchronize at a higher level * (if not in use, do something), etc. */ public boolean isInUse() { return inUse; } /** * Sets whether this connection is currently in use. * @throws java.util.ConcurrentModificationException * Occurs when the connection is already in use and it is set to be * in use, or it is not in use and it is set to be not in use. */ public synchronized void setInUse(boolean inUse) throws ConcurrentModificationException { if (this.inUse == inUse) throw new ConcurrentModificationException(); this.inUse = inUse; lastUsed = System.currentTimeMillis(); if (!inUse) clientObject = null; } /** * Sets the last used time to the current time. */ public void setLastUsed() { lastUsed = System.currentTimeMillis(); } /** * Gets the pooled object associated with this record. */ public Object getObject() { return object; } /** * Sets the client object associated with this object. Not always used. */ public void setClientObject(Object o) { clientObject = o; } /** * Gets the client object associated with this object. If there is none, * returns the normal object (which is the default). */ public Object getClientObject() { return clientObject == null ? object : clientObject; } /** * Shuts down this object - it will be useless thereafter. */ public void close() { object = null; clientObject = null; created = lastUsed = Long.MAX_VALUE; inUse = true; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -