我定义了以下用于理解的功能。该功能在特征中定义
def getCache(getData: () => EitherT[Future, Failure, V]): EitherT[Future, Failure, V] =
for {
lastModified <- lastModified.dbGet(CACHEKEY)
currentData <- getFromCache(lastModified, getData)
latestData <- getLatestData(lastModified, currentData, getData)
} yield latestData
我尝试过
(1)在getCache函数级别使用synced关键字,但是多个线程仍在调用lastModified.dbGet(CACHEKEY)进行理解
def getCache(getData: () => EitherT[Future, Failure, V]): EitherT[Future, Failure, V] = AnyRef.synchronized {
..........
}
(2)我尝试了
lastModified <- AnyRef.synchronized { lastModified.dbGet(CACHEKEY)}
但是多个线程仍在调用lastModified.dbGet(CACHEKEY)进行理解
如何使此代码线程安全?