16. Get Lock A
Modify A
IF (cond) Get Lock B A
Modify B B
Release Release
Lock A Lock B
17. Get Lock A
Modify A
Get Lock A
Get Lock B
Modify A
Modify B
Release
Lock A
Release
Lock B
Release
Lock A
18. 2
1 Get Lock B
Get Lock A
2
1 Modify B
Modify A
2
Get Lock A
1 1
IF (cond) Get Lock B
2
Modify B
1
Modify B
2
Release A
1 1
Release A Release B
2
Release B
19. 1 1 2
Get Lock A Get Lock A Get Lock B
1 1 2
Modify A Modify A Modify B
1 1 2
Get Lock B Get Lock B Get Lock A
1 1 2
Modify B Modify B Modify B
2
1 1 Release A
Release B Release B
2
2 1 Release B
Get Lock B Release A 1
Get Lock A
2 2
Modify B Get Lock B 1
Modify A
1 2
Release A Modify B 1
Get Lock B
2 2
Get Lock A Get Lock A 1
2 2 Modify B
Modify B Modify B
1
2 2 Release B
Release A Release A
2 2 1
Release B Release B Release A
20. 1 1 2 2
Get Lock A Get Lock A Get Lock B Get Lock B
1 1 2 2
Modify A Modify A Modify B Modify B
1 1 2 1
Get Lock B Get Lock B Get Lock A Get Lock A
1 1 2 1
Modify B Modify B Modify B Modify A
2
1 1 Release A 1
Release B Release B Get Lock B
2
2 1 Release B 2
Get Lock B Release A 1 Get Lock A
Get Lock A
2 2
Modify B Get Lock B 1
Modify A
1 2
Release A Modify B 1
Get Lock B
2 2
Get Lock A Get Lock A 1
2 2 Modify B
Modify B Modify B
1
2 2 Release B
Release A Release A
2 2 1
Release B Release B Release A
112. //Ask
Future response = actorRef.ask("hello");
…
//Get result
String result = response.get();
//Hello, synchronous call! Long time no see.
String syncResult = actorRef.ask("hello").get();