时髦的多线程

sri*_*ath 3 grails groovy multithreading

我是groovy/grails的新手.

如何为此代码实现线程.有2500个网址,这需要花费数小时的时间来检查每个网址.

所以我决定为此实现多线程:

这是我的示例代码:

def urls = [
  "http://www.wordpress.com",
  "http://67.192.103.225/QRA.Public/" ,
  "http://www.subaru.com",
  "http://baldwinfilter.com/products/start.html"
]

def up = urls.collect { ur ->
    try {
        def url = new URL(ur)
        def connection = url.openConnection()
        if (connection.responseCode == 200) {
            return true
        } else {
            return false
        }
    } catch (Exception e) {
        return false
    } 
}
Run Code Online (Sandbox Code Playgroud)

对于此代码,我需要实现多线程.
任何人都可以建议我的代码.

先谢谢,谢谢
.

moj*_*nes 11

我将看看Groovy并行系统库.特别是我认为Parallel collections部分会很有用.

看看文档,我相信collectParallel是collect的直接替代品(记住关于副作用的明显警告).以下工作对我来说很好:

def urls = [
  "http://www.wordpress.com",
  "http://www.subaru.com",
  "http://baldwinfilter.com/products/start.html"
]
Parallelizer.doParallel {
    def up = urls.collectParallel { ur ->
        try {
            def url = new URL(ur)
            def connection = url.openConnection()
            if (connection.responseCode == 200) {
                return true
            } else {
                return false
            }
        } catch (Exception e) {
            return false
        }
    }
    println up
}
Run Code Online (Sandbox Code Playgroud)