From a8087e06b7fa368bac21888481ee3044859d2449 Mon Sep 17 00:00:00 2001 From: lionsoul2014 Date: Tue, 25 Nov 2025 15:10:21 +0800 Subject: [PATCH] searcher pool init --- .../org/lionsoul/ip2region/SearcherPool.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/binding/java/src/main/java/org/lionsoul/ip2region/SearcherPool.java b/binding/java/src/main/java/org/lionsoul/ip2region/SearcherPool.java index d2c90ea..3256e09 100644 --- a/binding/java/src/main/java/org/lionsoul/ip2region/SearcherPool.java +++ b/binding/java/src/main/java/org/lionsoul/ip2region/SearcherPool.java @@ -4,8 +4,11 @@ package org.lionsoul.ip2region; +import java.io.IOException; import java.util.LinkedList; import java.util.Queue; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.locks.ReentrantLock; import org.lionsoul.ip2region.xdb.Searcher; @@ -22,12 +25,37 @@ public class SearcherPool { // searcher pool private final Queue pool; + // searcher lock + private final ReentrantLock lock; + + // searcher numbers that was loaned out + private final AtomicInteger loanCount; + public SearcherPool(Config config) { + this(config, false); + } + + public SearcherPool(Config config, boolean fair) { this.config = config; this.pool = new LinkedList<>(); + this.lock = new ReentrantLock(fair); + this.loanCount = new AtomicInteger(0); + } + + // init the searcher pool + public void init() throws IOException { + for (int i = 0; i < config.searchers; i++) { + final Searcher searcher = new Searcher(config.ipVersion, config.xdbPath, config.vIndex, config.cBuffer); + pool.add(searcher); + } } public Searcher getSearcher() { return null; } + + // close the searcher pool + public void close() { + this.loanCount.set(config.searchers); + } } \ No newline at end of file