Groovy:找不到'子类'的匹配构造函数

Ago*_*eca 1 groovy multithreading constructor subclass

我收到以下错误:

找不到匹配的构造函数:org.crawler.CrawlerUtils $ fetch(org.series.crawler.site.SubSiteA).

我正在尝试使用线程.我只使用过一次线程,而我正在努力做到和我在其他项目中做的一样.

我有:

Class CrawlerUtils {
    public static void crawlSites(List<Site> sites) {
        def pool = Executors.newFixedThreadPool(MAX_THREADS)
        def ecs = new ExecutorCompletionService<Void>(pool);
        sites.each { ecs.submit(new fetch(it), Void) }
        sites.each { ecs.take().get() }
        pool.shutdown()
    }

    class fetch implements Runnable {
        Site site
        fetch(Site site) {
            this.site = site
        }
        public void run() {
            site.parse()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过这些(uglies)方法:

  • 创建一个接口(使用的ISite网站,而不是网站的网站获取构造函数)
  • fetch类中的每个子类中放置一个构造函数
  • 在每个调用super()的子类中放置一个构造函数

任何的想法?

tim*_*tes 5

由于crawlSites是静态的,所以类Fetch(应该有大写字母遵循任何形式的通用命名方案)也需要是静态的.

static class Fetch implements Runnable
Run Code Online (Sandbox Code Playgroud)

我会使用GPars ...看看指南的这一部分

你应该能够做到:

GParsPool.withPool {
  sites.eachParallel { site -> site.parse() }
}
Run Code Online (Sandbox Code Playgroud)