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