這是本文件的舊版!
File Changed Cache
package org.tonylin.practice.guava.cache; import java.io.File; import com.google.common.base.Supplier; public class ExpiredFileMemorizeSupplier<T> implements Supplier<T> { private File mFile; private Supplier<T> mDelegate; private long mLastModified = 0; private transient volatile T value; public ExpiredFileMemorizeSupplier(IFileDataSupplier<T> delegate){ mFile = delegate.getFile(); mDelegate = delegate; } public ExpiredFileMemorizeSupplier(Supplier<T> delegate, File file){ mFile = file; mDelegate = delegate; } @Override public T get() { long lastModified = mFile.lastModified(); synchronized (this) { if( lastModified != mLastModified ) { mLastModified = lastModified; value = mDelegate.get(); } return value; } } }
package org.tonylin.practice.guava.cache; import java.io.File; import com.google.common.base.Supplier; public interface IFileDataSupplier<T> extends Supplier<T> { File getFile(); }