import java.util.concurrent.atomic.AtomicInteger
import scala.concurrent.{ExecutionContext, Future}
object ThreadTest {
def main(args: Array[String]): Unit = {
val i = new AtomicInteger(1)
def createF(threadContext: Int)(implicit executionContext: ExecutionContext) = Future{
val v = i.get()
var tag = true
for (j <- v to (v + 2)) {
if(j <= 100) {
println(s"thread$threadContext:$j")
} else tag = false
}
i.set(v + 3)
tag
}
import concurrent.ExecutionContext.Implicits.global
def thread1: Future[Boolean] = createF(1)
.flatMap(b => if(b) thread2 else Future.successful(false))
def thread2: Future[Boolean] = createF(2)
.flatMap(b => if(b) thread3 else Future.successful(false))
def thread3: Future[Boolean] = createF(3)
.flatMap(b => if(b) thread1 else Future.successful(false))
thread1
while(true) 1
}
}
【scala】无锁多线程打印1->100
最新推荐文章于 2023-03-25 13:02:01 发布