您的位置:首页 > 其它

Scala求因子

2016-05-03 00:00 267 查看
import java.util.concurrent.{Callable}
import  java.util.concurrent.Future

import com.dt.util.{ThreadUtils}

/**
* Created by hadoop on 2016/5/3.
*/
object ThreadTest {

val executors = ThreadUtils.newDaemonCachedThreadPool("work thread")

/**
* 数据分片
* @param num
* @param slice
* @return
*/
def divNum(num: Int, slice: Int = 10): IndexedSeq[(Int, Int)] ={
val step = (num + slice) / slice
val result = for(i <- 1 to step) yield{
val a = slice *(i - 1) + 1
val b = a + (slice -1 )
if(b < num) (a,b) else (a,num)
}
result.filter(_._1 < num)
}

/**
* 在区间搜索
* @param number
* @param start
* @param end
* @return
*/
def search(number: Int, start: Int, end: Int)= {
for(i <- start to end) yield{
if(number % i == 0) i else 0
}
}

def submitJob(num: Int, slice: Int = 10): IndexedSeq[Future[String]] ={
val range = divNum(num, 200)
for(x <- range) yield{
executors.submit(new Callable[String] {
override def call(): String = search(num, x._1, x._2).filter(_.!=(0)).mkString(",")
})
}
}

def main(args: Array[String]) {

val num = 9
val futures = submitJob(num, 1)
for(future <- futures){
val result = future.get()
if(result.length > 0) println(result)
}
println(divNum(90,20))
println("任务执行完成哈哈")

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Scala