fixed concurrent incrementation problems
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
b5ce74b0f1
commit
28aff516eb
@ -1,20 +1,22 @@
|
|||||||
package org.tbasket.compute
|
package org.tbasket.handler
|
||||||
|
|
||||||
import org.tbasket.api.compute.APIRequestHandler
|
import org.tbasket.api.compute.APIRequestHandler
|
||||||
import zio.http.{Request, Response}
|
import zio.http.{Request, Response}
|
||||||
|
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger
|
||||||
|
|
||||||
object IncrementHandler extends APIRequestHandler {
|
object IncrementHandler extends APIRequestHandler {
|
||||||
|
|
||||||
@volatile private var i = 0
|
private val i = new AtomicInteger(0)
|
||||||
|
|
||||||
def getCounter: Int = i
|
def getCounter: Int = i.get()
|
||||||
|
|
||||||
override def get(request: Request): Response = {
|
override def get(request: Request): Response = {
|
||||||
Response.json(s"{\"value\": $i}")
|
Response.json(s"{\"value\": $i}")
|
||||||
}
|
}
|
||||||
|
|
||||||
override def post(request: Request): Response = {
|
override def post(request: Request): Response = {
|
||||||
i += 1
|
i.incrementAndGet()
|
||||||
println(s"Counter is now $i")
|
println(s"Counter is now $i")
|
||||||
Response.ok
|
Response.ok
|
||||||
}
|
}
|
Reference in new issue