我必须在多线程服务器中解决以下上下文中的线程安全问题。 API端点位于APIClass
,其实例为Handler
。我希望Handler
类是线程安全的,这样Handler
的方法都没有从DB读取脏内容。我有一个方法(使db
(DB的实例)volatile
),但它似乎是一个矫枉过正,性能将受到严重打击。
类层次结构:
class DB {
// Fetch calls
// Update calls
// Delete calls
}
class Handler {
private[this] val db = new DB
def doSomething1(...) {
// some Fetch Calls of DB
// some computation base upon fetched values from DB
// some Update Calls to DB based upon above computation
}
def doSomething2(...) {
// some Fetch Calls of DB
// some computation base upon fetched values from DB
// some Update Calls to DB based upon above computation
// some Delete Calls
}
}
class APIClass {
private[this] handler = new Handler
def API_whichCallsSomething1 {
handler.doSomething1(...)
}
def API_whichCallsSomething2 {
handler.doSomething2(...)
}
}
解决这种情况的最佳方法是什么?
PS。如果有人对问题陈述有更好的称号,请随时更新。