그래서 내가 사용하고있는 제네릭 풀이 있는데 실제로 초기화에서 무슨 일이 일어 났는지 궁금합니다. 선생님을 만들어 풀에 그것을 사용하면됩니까? 만약 그렇다면 어떤 비용이 듭니까?일반 클래스 - Java에서 초기화
final Pool<Teacher> pool = new Teacher();
주 : 수영장은 추상 클래스 & 교사가 사전에 풀을 감사를 연장!
여기에 풀 클래스의 다음 Pool
가정
public abstract class ObjectPool<T> {
private long expirationTime;
private Hashtable<T, Long> locked, unlocked;
public ObjectPool() {
expirationTime = 30000; // 30 seconds
locked = new Hashtable<T, Long>();
unlocked = new Hashtable<T, Long>();
}
protected abstract T create();
public abstract boolean validate(T o);
public abstract void expire(T o);
public synchronized T checkOut() {
long now = System.currentTimeMillis();
T t;
if (unlocked.size() > 0) {
Enumeration<T> e = unlocked.keys();
while (e.hasMoreElements()) {
t = e.nextElement();
if ((now - unlocked.get(t)) > expirationTime) {
// object has expired
unlocked.remove(t);
expire(t);
t = null;
} else {
if (validate(t)) {
unlocked.remove(t);
locked.put(t, now);
return (t);
} else {
// object failed validation
unlocked.remove(t);
expire(t);
t = null;
}
}
}
}
// no objects available, create a new one
t = create();
locked.put(t, now);
return (t);
}
public synchronized void checkIn(T t) {
locked.remove(t);
unlocked.put(t, System.currentTimeMillis());
}
}
'교사'가 '풀'(또는 구현 도구)을 확장하지 않으면 작동하지 않습니다. – Justin
이 코드가 컴파일됩니까? 수업은 어떻게 보이나요? –
교사가 수영장을 확장하고 추상적 인 방법을 구현하는 한, 컴파일하고 잘 실행됩니다. – user1861156