Tuesday, May 20, 2014

scala课堂:Concurrence in Scala


  • Runnable/Callable
    • Runnable接口只有一个没有返回值的方法。
    • Callable与之类似,除了它有一个返回值。
  • 线程
    • scala并发是建立在java并发模型基础上的。
    • 一个线程需要一个Runnable。你必须用线程的start方法来运行Runnable。
  • Executors
    • 你可以通过Executors对象的静态方法得到一个ExecutorService对象。
  • Futures
    • Future代表异步计算。
    • 你可以把你的计算包装在Future中,当你需要计算结果的时候,你只需要调用一个阻塞的get()方法就可以了。
    • 一个FutureTask是一个Runnable实现,就是被设计为由Executor运行的。
  • 线程安全问题
    • 三种工具
      • 同步:互斥锁(Mutex)提供所有权语义。
      • volatile:synchronized云溪更细粒度的锁,而volatile则对每次访问同步。
      • AtomicReference
      • 这个成本是什么?synchronized往往是最好的选择。
      • CountDownLatch
      • AtomicInteger/Long
      • AtomicBoolean
      • ReadWriteLocks

No comments:

Post a Comment