Skip to content

Instantly share code, notes, and snippets.

@xuwei-k
Forked from tkawachi/Test.scala
Created July 28, 2015 05:28
Show Gist options
  • Save xuwei-k/a103de475ed004bd4cb9 to your computer and use it in GitHub Desktop.
Save xuwei-k/a103de475ed004bd4cb9 to your computer and use it in GitHub Desktop.
import java.util.concurrent.atomic.AtomicInteger
import java.util.concurrent.{ ThreadFactory, Executors, ExecutorService }
import scalaz.concurrent.Task
object Test {
class MyThreadFactory(prefix: String) extends ThreadFactory {
val n = new AtomicInteger(0)
override def newThread(r: Runnable) = {
val t = Executors.defaultThreadFactory().newThread(r)
val threadN = n.incrementAndGet()
t.setName(s"$prefix-$n")
t.setDaemon(true)
t
}
}
val serviceA = Executors.newFixedThreadPool(1, new MyThreadFactory("serviceA"))
val serviceB = Executors.newFixedThreadPool(1, new MyThreadFactory("serviceB"))
def main(args: Array[String]): Unit = {
val printThreadTask = Task(println(Thread.currentThread))(serviceA)
val forkedTask = Task.fork{
println("within fork " + Thread.currentThread)
printThreadTask
}(serviceB)
println("printThreadTask.run")
printThreadTask.run
println("forkedTask.run")
forkedTask.run
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment