diff --git a/webmagic-core/src/main/java/us/codecraft/webmagic/Spider.java b/webmagic-core/src/main/java/us/codecraft/webmagic/Spider.java index 40fb70d..45766f3 100644 --- a/webmagic-core/src/main/java/us/codecraft/webmagic/Spider.java +++ b/webmagic-core/src/main/java/us/codecraft/webmagic/Spider.java @@ -234,12 +234,15 @@ public class Spider implements Runnable, Task { } Request request = scheduler.poll(this); //single thread - if (executorService == null) { + if (threadNum <= 1) { while (request != null && stat.compareAndSet(STAT_RUNNING, STAT_RUNNING)) { processRequest(request); request = scheduler.poll(this); } } else { + synchronized (this) { + this.executorService = ThreadUtils.newFixedThreadPool(threadNum); + } //multi thread final AtomicInteger threadAlive = new AtomicInteger(0); while (true && stat.compareAndSet(STAT_RUNNING, STAT_RUNNING)) { @@ -363,10 +366,11 @@ public class Spider implements Runnable, Task { public void stop() { stat.compareAndSet(STAT_RUNNING, STAT_STOPPED); + executorService.shutdown(); } public void stopAndDestroy() { - stat.compareAndSet(STAT_RUNNING, STAT_STOPPED); + stop(); destroy(); } @@ -385,9 +389,6 @@ public class Spider implements Runnable, Task { if (threadNum == 1) { return this; } - synchronized (this) { - this.executorService = ThreadUtils.newFixedThreadPool(threadNum); - } return this; } diff --git a/webmagic-core/src/main/java/us/codecraft/webmagic/selector/Selectors.java b/webmagic-core/src/main/java/us/codecraft/webmagic/selector/Selectors.java index 9764641..0c34ead 100644 --- a/webmagic-core/src/main/java/us/codecraft/webmagic/selector/Selectors.java +++ b/webmagic-core/src/main/java/us/codecraft/webmagic/selector/Selectors.java @@ -44,9 +44,4 @@ public abstract class Selectors { return new OrSelector(selectors); } - public static void main(String[] args) { - String s = "a"; - or(regex("