From f4aae2a0273ee525c849eed585a8906ab04389c3 Mon Sep 17 00:00:00 2001 From: seven332 Date: Mon, 30 Mar 2015 21:10:21 +0800 Subject: [PATCH] Remove useless lock in AnyCache --- .../com/hippo/ehviewer/cache/AnyCache.java | 57 +++++++------------ 1 file changed, 20 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/cache/AnyCache.java b/app/src/main/java/com/hippo/ehviewer/cache/AnyCache.java index d23d8b938..45009dbbc 100644 --- a/app/src/main/java/com/hippo/ehviewer/cache/AnyCache.java +++ b/app/src/main/java/com/hippo/ehviewer/cache/AnyCache.java @@ -48,8 +48,6 @@ public abstract class AnyCache { private final Object mPauseLock = new Object(); private final Object mDiskCacheLock = new Object(); - private boolean mDiskCacheStarting = true; - public AnyCache(AnyCacheParams params) { params.isValid(); @@ -78,10 +76,6 @@ public abstract class AnyCache { } catch (IOException e) { Log.e(TAG, "Can't create disk cache", e); } - - // Set up disk cache finished - mDiskCacheStarting = false; - mDiskCacheLock.notifyAll(); } } @@ -138,13 +132,6 @@ public abstract class AnyCache { String diskKey = hashKeyForDisk(key); synchronized (mDiskCacheLock) { - while (mDiskCacheStarting) { - try { - mDiskCacheLock.wait(); - } catch (InterruptedException e) { - // Just ignore - } - } if (mDiskCache != null) { return mDiskCache.get(diskKey); } else { @@ -213,13 +200,6 @@ public abstract class AnyCache { String diskKey = hashKeyForDisk(key); synchronized (mDiskCacheLock) { - while (mDiskCacheStarting) { - try { - mDiskCacheLock.wait(); - } catch (InterruptedException e) { - // Just ignore - } - } if (mDiskCache != null) { mDiskCache.put(diskKey, value); return true; @@ -287,29 +267,32 @@ public abstract class AnyCache { * Clear disk cache */ public void clearDisk() { - synchronized (mDiskCacheLock) { - mDiskCacheStarting = true; - if (mDiskCache != null && !mDiskCache.isClosed()) { - try { - mDiskCache.delete(); - } catch (IOException e) { - Log.e(TAG, "AnyCache clearCache", e); + if (mHasDiskCache) { + synchronized (mDiskCacheLock) { + if (mDiskCache != null && !mDiskCache.isClosed()) { + try { + mDiskCache.delete(); + } catch (IOException e) { + Log.e(TAG, "AnyCache clearCache", e); + } + File cacheDir = mDiskCache.getCacheDir(); + int maxSize = mDiskCache.getMaxSize(); + mDiskCache = null; + initDiskCache(cacheDir, maxSize); } - File cacheDir = mDiskCache.getCacheDir(); - int maxSize = mDiskCache.getMaxSize(); - mDiskCache = null; - initDiskCache(cacheDir, maxSize); } } } public void flush() { - synchronized (mDiskCacheLock) { - if (mDiskCache != null) { - try { - mDiskCache.flush(); - } catch (IOException e) { - Log.e(TAG, "AnyCache flush", e); + if (mHasDiskCache) { + synchronized (mDiskCacheLock) { + if (mDiskCache != null) { + try { + mDiskCache.flush(); + } catch (IOException e) { + Log.e(TAG, "AnyCache flush", e); + } } } }