more than java concurrency
DESCRIPTION
more choices for java's default share-state concurrency modelthe doc is incompleteTRANSCRIPT
![Page 1: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/1.jpg)
Darren.Wang(王福强)
More Than Java Concurrency
Thursday, January 20, 2011
![Page 2: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/2.jpg)
Agenda
More Than Java Concurrency? What’s More?
Several Concurrency Models/Patterns
Case Study
Questions?
The end
Thursday, January 20, 2011
![Page 3: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/3.jpg)
Why concurrency?
为了反映一些问题的逻辑结构
为了应对相互独立的多台物理设备
为了同时在多部处理器上运行以提高性能
Thursday, January 20, 2011
![Page 4: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/4.jpg)
What concurrency offers
reduce latency
divide and conquer, run in parallel reduce the latency
hide latency
asynchronous
increase throughput
more tasks can be run without wasting available computing power
Thursday, January 20, 2011
![Page 5: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/5.jpg)
What we do with Java Concurrency
State, That’s all of the about.
Atomicity - keep state intact
Visibility - make right state access
Thursday, January 20, 2011
![Page 6: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/6.jpg)
When Things Go Wrong
Thursday, January 20, 2011
![Page 7: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/7.jpg)
What If ...
Thursday, January 20, 2011
![Page 8: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/8.jpg)
What We Will Talk Today
Share-State Concurrency
Share-Nothing Concurrency
Software Transaction Memory
Data-Flow Concurrency
Thursday, January 20, 2011
![Page 9: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/9.jpg)
Share-State Concurrency
Thursday, January 20, 2011
![Page 10: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/10.jpg)
JMM Simplified
Picture borrowed from <<Java多线程设计模式>>
Thursday, January 20, 2011
![Page 11: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/11.jpg)
JMM escalation
Thursday, January 20, 2011
![Page 12: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/12.jpg)
How to deal with?
How many ways can you count?
Here we go...
Thursday, January 20, 2011
![Page 13: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/13.jpg)
Immutability
immutable anytime
Immutable Object
immutable before publishing
Map & ConcurrencyMap
(1)To Find More in book <<Java Concurrency In Practice>>
Thursday, January 20, 2011
![Page 14: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/14.jpg)
Confinement
Thread Confinement
Thread-Specific Variables(ThreadLocal)
Stack Confinement
Method Stack Scope
Thursday, January 20, 2011
![Page 15: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/15.jpg)
Synchronization
Synchronized Block(Implicit Lock)
Explicit Lock
Volatile (Partial Synchronization Support)
Thursday, January 20, 2011
![Page 16: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/16.jpg)
Gotchas With Synchronization
Deadlock
how to prevent it?
Live lock
Starvation
Thursday, January 20, 2011
![Page 17: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/17.jpg)
Gotchas With Synchronization
Deadlock
how to prevent it?
Live lock
Starvation
Resource Re-ordering
Thursday, January 20, 2011
![Page 18: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/18.jpg)
Gotchas With Synchronization
Deadlock
how to prevent it?
Live lock
Starvation
Resource Re-ordering
Periodic Retry
Thursday, January 20, 2011
![Page 19: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/19.jpg)
Performance Tuning with Synchronization
reduce the time of holding locks
break global locks into fine-grained locks
what coming next?
Thursday, January 20, 2011
![Page 20: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/20.jpg)
CAS
Compare-And-Set | Compare-And-Swap
java.util.concurrent.atomic after Java5
AtomicInteger
AtomicLong
AtomicBoolean
AtomicReference
Thursday, January 20, 2011
![Page 21: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/21.jpg)
Section Conclusion
Pessimistic Model
Lock-Based
Optimistic Model
Lock-Free
Thursday, January 20, 2011
![Page 22: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/22.jpg)
Share-Nothing Concurrency
Thursday, January 20, 2011
![Page 23: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/23.jpg)
Share-Nothing Concurrency
AKA. Message Passing Concurrency
Confinement In a Big Picture
Thursday, January 20, 2011
![Page 24: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/24.jpg)
Actor Model
First proposed by Carl Hewitt in 1973
improved by Gul Agha
An Actor Can:
change internal state
send messages to peer actors
create new actors
migrate to another computing host
Thursday, January 20, 2011
![Page 25: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/25.jpg)
Actor Rocks
more light weight
event based actors of akka can create 6.5million on 4 G RAM (600 bytes each)
much easier, just send messages
counter ! tick
Thursday, January 20, 2011
![Page 26: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/26.jpg)
Actors Available
Erlang Platform
Scala Platform
TBA, EBA
Lift Actor, Akka Actor
Java Platform
Kilim, SALSA(simple actor language, system and architecture)
Other
Thursday, January 20, 2011
![Page 27: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/27.jpg)
Actor Almighty?
when we really have shared states, e.g. bank account?
when we need to form unified consensus
when we need synchronous behavior
a bit verbose compared to method dispatch
Thursday, January 20, 2011
![Page 28: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/28.jpg)
Section Conclusion
Actor Model Rocks In Some Situations, But not all
Share Nothing Simplify the Architecture Design
Prefer Share Nothing to Share State If Possible
Thursday, January 20, 2011
![Page 29: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/29.jpg)
You Know Lego, Right?
Thursday, January 20, 2011
![Page 30: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/30.jpg)
Case Study I
Session Management
Centralized Storage
memcached, database...
Client-Specific Storage
secure cookie
other local-storage mechanism
Thursday, January 20, 2011
![Page 31: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/31.jpg)
Case Study II
Map-Reduce
When Share Nothing can rock in
When Share State Is a Must
Thursday, January 20, 2011
![Page 32: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/32.jpg)
Case Study III
Symmetric Cluster
Share Nothing
Asymmetric Cluster
Share State
Thursday, January 20, 2011
![Page 33: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/33.jpg)
STM
Software Transaction Memory
Transaction operations execute in the own thread in parallel, commit will cause One to be successful and others to abort or retry
Thursday, January 20, 2011
![Page 34: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/34.jpg)
Sounds Familiar?
Optimistic Model
Can be nested
Simple Programming Model
Thursday, January 20, 2011
![Page 35: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/35.jpg)
Available Solutions
Clojure
Concurrent Haskell
STM .Net
More...
Thursday, January 20, 2011
![Page 36: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/36.jpg)
Cons
All operations in scope of a transaction:
need to be idempotent
can’t have side-effects
Memory Concern
Conflicting Rate Concern
Thursday, January 20, 2011
![Page 37: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/37.jpg)
Section Conclusion
optimistic model
simple programming model
with restrictions
which may cause limitations(MS drops STM)
Thursday, January 20, 2011
![Page 38: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/38.jpg)
Data-Flow Concurrency
AKA. Declarative Concurrency
Thursday, January 20, 2011
![Page 39: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/39.jpg)
Have you ever...
Thursday, January 20, 2011
![Page 40: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/40.jpg)
Features
Single Assignment Variables
Data-States trigger process flow
Thursday, January 20, 2011
![Page 41: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/41.jpg)
Available Languages
LabView图形化编程语言
Thursday, January 20, 2011
![Page 42: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/42.jpg)
Usage Scenarios
Signal Process System
Thursday, January 20, 2011
![Page 43: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/43.jpg)
Typical Operations
create a data-flow variable
wait for the variable to be bound
bind the variable
Thursday, January 20, 2011
![Page 44: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/44.jpg)
Limitations
Can’t have side-effects
Exceptions
IO
Others
Thursday, January 20, 2011
![Page 45: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/45.jpg)
Section Conclusion
Data Based Concurrency
Thursday, January 20, 2011
![Page 46: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/46.jpg)
comparison of common facilities
Executor (Agent)
Actor (HawtDispatch)
STM
Transactor(Actor + STM)
Thursday, January 20, 2011
![Page 47: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/47.jpg)
Thursday, January 20, 2011
![Page 48: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/48.jpg)
Thank You
Thursday, January 20, 2011
![Page 49: More Than Java Concurrency](https://reader036.vdocument.in/reader036/viewer/2022062300/5550f366b4c905417d8b555a/html5/thumbnails/49.jpg)
The End
Thursday, January 20, 2011