scala类级别同步

时间:2016-09-28 19:17:11

标签: java multithreading scala concurrency

我必须在多线程服务器中解决以下上下文中的线程安全问题。 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。如果有人对问题陈述有更好的称号,请随时更新。

0 个答案:

没有答案