All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.firefly.utils.lang.pool.PooledObject Maven / Gradle / Ivy

There is a newer version: 5.0.2
Show newest version
package com.firefly.utils.lang.pool;

import com.firefly.utils.time.Millisecond100Clock;

import java.util.concurrent.atomic.AtomicBoolean;

/**
 * @author Pengtao Qiu
 */
public class PooledObject {

    private final T object;
    private final long createTime;
    private long activeTime;
    private AtomicBoolean released = new AtomicBoolean(false);

    public PooledObject(T object) {
        this.object = object;
        createTime = Millisecond100Clock.currentTimeMillis();
        activeTime = createTime;
    }

    boolean prepareTake() {
        return released.compareAndSet(true, false);
    }

    boolean prepareRelease() {
        return released.compareAndSet(false, true);
    }

    public boolean isReleased() {
        return released.get();
    }

    public T getObject() {
        activeTime = Millisecond100Clock.currentTimeMillis();
        return object;
    }

    public long getCreateTime() {
        return createTime;
    }

    public long getActiveTime() {
        return activeTime;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy