当前位置: 首页>>代码示例>>Scala>>正文


Scala ConcurrentMap类代码示例

本文整理汇总了Scala中java.util.concurrent.ConcurrentMap的典型用法代码示例。如果您正苦于以下问题:Scala ConcurrentMap类的具体用法?Scala ConcurrentMap怎么用?Scala ConcurrentMap使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了ConcurrentMap类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Scala代码示例。

示例1: TextDocumentManager

//设置package包名称以及导入依赖的类
package langserver.core

import langserver.messages._
import langserver.types._
import java.util.concurrent.ConcurrentMap
import java.util.concurrent.ConcurrentHashMap
import com.typesafe.scalalogging.LazyLogging

import scala.collection.JavaConverters._



class TextDocumentManager(connection: Connection) extends LazyLogging {
  connection.notificationHandlers += {
    case DidOpenTextDocumentParams(td) => onOpenTextDocument(td)
    case DidChangeTextDocumentParams(td, changes) => onChangeTextDocument(td, changes)
    case DidCloseTextDocumentParams(td) => onCloseTextDocument(td)
    case e => ()
  }

  private val docs: ConcurrentMap[String, TextDocument] = new ConcurrentHashMap

  def documentForUri(uri: String): Option[TextDocument] =
    Option(docs.get(uri))

  def allOpenDocuments: Seq[TextDocument] = docs.values.asScala.toSeq

  def onOpenTextDocument(td: TextDocumentItem) = {
    docs.put(td.uri, new TextDocument(td.uri, td.text.toCharArray))
  }

  def onChangeTextDocument(td: VersionedTextDocumentIdentifier, changes: Seq[TextDocumentContentChangeEvent]) = {
    docs.get(td.uri) match {
      case null =>
        logger.error(s"Document ${td.uri} not found in this manager. Adding now")
        // we assume full text sync
        docs.put(td.uri, new TextDocument(td.uri, changes.head.text.toCharArray))
      case doc =>
        docs.put(td.uri, doc.applyChanges(changes))
    }
  }

  def onCloseTextDocument(td: TextDocumentIdentifier) = {
    docs.remove(td.uri)
  }

} 
开发者ID:dragos,项目名称:dragos-vscode-scala,代码行数:48,代码来源:TextDocumentManager.scala

示例2: ConcurrentMapCache

//设置package包名称以及导入依赖的类
package com.twitter.cache

import com.twitter.util.{Promise, Future}
import java.util.concurrent.ConcurrentMap


class ConcurrentMapCache[K, V](underlying: ConcurrentMap[K, Future[V]]) extends FutureCache[K, V] {
  def get(key: K): Option[Future[V]] = Option(underlying.get(key))

  def set(key: K, value: Future[V]): Unit = underlying.put(key, value)

  def getOrElseUpdate(key: K)(compute: => Future[V]): Future[V] = {
    val p = Promise[V]
    underlying.putIfAbsent(key, p) match {
      case null =>
        p.become(compute)
        p
      case oldv => oldv
    }
  }

  def evict(key: K, value: Future[V]): Boolean = underlying.remove(key, value)

  def size: Int = underlying.size()
} 
开发者ID:lanshuijuntuan,项目名称:Java.util,代码行数:26,代码来源:ConcurrentMapCache.scala

示例3: list

//设置package包名称以及导入依赖的类
package com.tennik.akkatcp.dao

import java.util.concurrent.{ ConcurrentHashMap, ConcurrentMap }

import com.tennik.akkatcp.models.User
import org.mindrot.jbcrypt.BCrypt

import scala.collection.JavaConverters._

trait UserDao {
  def list: Iterable[User]
  def find(userName: String): Option[User]
  def create(user: User): Option[User]
  def update(user: User): Option[User]
  def delete(userName: String): Option[User]
}

//in memory storage
class InMemoryUserDAO extends UserDao {

  val storage: ConcurrentMap[String, User] = new ConcurrentHashMap[String, User]()

  import InMemoryUserDAO._

  def init() {
    storage.put("admin", User("admin", pwd("password")))
    storage.put("user1", User("user", pwd("password1")))
    storage.put("user2", User("user", pwd("password2")))
  }

  init()

  def list: Iterable[User] = storage.values().asScala
  def find(userName: String): Option[User] = Option(storage.get(userName))

  def create(user: User): Option[User] = Option(storage.put(user.userName, User(user.userName, pwd(user.password))))
  def update(user: User): Option[User] = {
    val oldUser = storage.get(user.userName)
    storage.put(user.userName, User(user.userName, pwd(user.password)))
    Option(oldUser)
  }
  def delete(userName: String): Option[User] = {
    val oldUser = storage.get(userName)
    storage.remove(userName, oldUser)
    Option(oldUser)
  }
}

object InMemoryUserDAO {
  def pwd(p: String): String = BCrypt.hashpw(p, BCrypt.gensalt())
} 
开发者ID:antonveretennyk,项目名称:akkatcp,代码行数:52,代码来源:InMemoryUserDAO.scala


注:本文中的java.util.concurrent.ConcurrentMap类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。