From 9a5f6ccb74eb51f2d8e34e871aace48c66dd35ff Mon Sep 17 00:00:00 2001 From: seven332 Date: Sat, 19 Mar 2016 01:19:12 +0800 Subject: [PATCH] Actually it my fault. Make mRequestPTokenQueue thread safe --- .../java/com/hippo/ehviewer/spider/SpiderQueen.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java b/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java index 1fd8ce66d..964288c0a 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java +++ b/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java @@ -69,6 +69,7 @@ import java.util.List; import java.util.Queue; import java.util.Stack; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicInteger; @@ -139,7 +140,7 @@ public class SpiderQueen implements Runnable { private final Object mPTokenLock = new Object(); private volatile SpiderInfo mSpiderInfo; - private final Queue mRequestPTokenQueue = new LinkedList<>(); + private final Queue mRequestPTokenQueue = new ConcurrentLinkedQueue<>(); private final Object mPageStateLock = new Object(); private volatile int[] mPageStateArray; @@ -828,14 +829,7 @@ public class SpiderQueen implements Runnable { // handle pToken request while (!Thread.currentThread().isInterrupted()) { - Integer index; - synchronized (mPTokenLock) { - if (mRequestPTokenQueue.isEmpty()) { - index = null; - } else { - index = mRequestPTokenQueue.poll(); - } - } + Integer index = mRequestPTokenQueue.poll(); if (index == null) { // No request index, wait here