SlideShare a Scribd company logo
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
YIFAN XING - 2018
ASYNCHRONOUS
PROGRAMMING
Yifan Xing
SCALA.CONCURRENT AND
MONIX!
@yifan_xing_e
01 Synchronous vs. Asynchronous
Differences
Futures & Promises
Debugging Async Programs
Monix
A TOUR OF ASYNCHRONOUS
PROGRAMMING IN SCALA
02
03
04
05Overview
ASYNCHRONOUS
PROGRAMMING:
SCALA.CONCURRENT
AND MONIX!
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Concurrency
Synchronous
Asynchronous
Single-threaded
Multi-threaded
YIFAN XING - 2018 @yifan_xing_e
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Synchronous: Single-threaded
YIFAN XING - 2018
Task 1 Task 2 Task 3
@yifan_xing_e
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Synchronous: Multi-threaded
YIFAN XING - 2018
Task 1
Task 2
Task 3
@yifan_xing_e
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Asynchronous: Single-threaded
YIFAN XING - 2018
Task 1
Task 2
Task 3
@yifan_xing_e
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Asynchronous: Multi-threaded
YIFAN XING - 2018
Task 1
Task 2
Task 3
@yifan_xing_e
Future
Promise
ExecutionContext
Examples
Scala.concurrent
YIFAN XING - 2018
Scala.concurrent: Future
Computation Incomplete:
Computation Completed:
Future is not completed
Future is completed: with a Value => Success
Future is completed: with an Exception => Failure
An object holding a value which may become available at some point
Immutable
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALAA TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
@yifan_xing_e
Future
YIFAN XING - 2018
Example: Callbacks
Multiple
callbacks may
be registered;
NO guarantee
that they will be
executed in a
particular order.
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
@yifan_xing_e
YIFAN XING - 2018
Example: Callbacks
Chain callbacks
Allow one to enforce
callbacks to be
executed in a
specified order.
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
@yifan_xing_e
YIFAN XING - 2018
Example: Callbacks
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
@yifan_xing_e
Exception in
callback:
NOT propagated
to the
subsequent
andThen
callbacks.
YIFAN XING - 2018
Example: Transformations
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
@yifan_xing_e
YIFAN XING - 2018
Example: Transformations
More generic &
flexible
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
@yifan_xing_e
YIFAN XING - 2018
Example: Transformations
If no match
cases or original future
contains a valid result:
New future will contain
the same result as the
original one.
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALAA TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
@yifan_xing_e
Evaluated only after
a Failure
YIFAN XING - 2018
Example: Transformations
If both futures failed,
the resulting future
holds the throwable
object of the first
future.
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
@yifan_xing_e
YIFAN XING - 2018
Scala.concurrent: Promises
A writable, single-assignment container
Can create a Future
Can complete a Future, only ONCE
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
@yifan_xing_e
Promise:
YIFAN XING - 2018
Example: Promises
A Promise can be
completed at most ONCE.
If the promise has already
been fulfilled, failed or
has timed out, calling this
method will throw an
IllegalStateException.
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
@yifan_xing_e
YIFAN XING - 2018
Example: Promises
If the promise has
already been
completed returns
false, or true
otherwise.
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
@yifan_xing_e
YIFAN XING - 2018
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Problem in A Client-facing Interface
@yifan_xing_e
YIFAN XING - 2018
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
p.future
Problem in A Client-facing Interface
@yifan_xing_e
YIFAN XING - 2018
Monix
@yifan_xing_e
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
What is Monix?
Asynchronous, event-based programs
Data type: Task, etc.
"Factory" of Future instances
Lazy & asynchronous computations
YIFAN XING - 2018 @yifan_xing_e
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Monix: Task
YIFAN XING - 2018
Lazily evaluated
Evaluated when
call runAsync
Trigger side effects
@yifan_xing_e
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Monix: Task Callback
YIFAN XING - 2018
Eagerly evaluate task
Register callbacks
Similar to
Future#onComplete
@yifan_xing_e
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Monix: Eager/ Lazy
YIFAN XING - 2018
Evaluate eagerly
Equivalent to Future#successful
Defer eager evaluation
Similar to Task#eval
@yifan_xing_e
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Monix: Memoization
YIFAN XING - 2018
Evaluated lazily
Not memoized, recompute each
time the Task is executed.
Evaluate lazily
Evaluated exactly ONCE
Result is memoized
@yifan_xing_e
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Monix: MemoizeOnSuccess
YIFAN XING - 2018
Exceptions are not cached.
Only cache the first
successful result
@yifan_xing_e
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Monix: Alternative Thread Pool
YIFAN XING - 2018
Overrides default scheduler
Overriding the "default"
scheduler can only happen
ONCE
Task is immutable
@yifan_xing_e
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Monix: CancelableFuture
YIFAN XING - 2018
Calling it multiple
times has the same side-
effect as calling it only once.
@yifan_xing_e
- A value
- Executed when constructed
- Eager evaluation
- ExecutionContext needed whenever use   
   operators
A function - 
Execution controllable by user - 
Lazy evaluation - 
ExecutionScheduler needed whenever - 
 use runAsync   
MonixFuture
Eager/Lazy
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
- Memoized by default
- Evaluated once
- Store result
Explicitly use memoization operators - 
Evaluated whenever needed - 
Referential transparency - 
MonixFuture
Memoization
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
- Sometimes errors are                         
   not propagated
Scheduler.reportFailure - 
Defaults to System.err - 
Allow customized logging tools - 
MonixFuture
ErrorHandling
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Future Monix
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
FutureMonix
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Debugging
BEST PRACTICES
In Asynchronous Programs
@yifan_xing_e
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Writing Async Code
1. Rethink before
adding more code
2. Adding more code to
fix problems will
usually add more bugs
D e b u g
1. Test code in isolation
2. Observe what is
happening
3. Confirm behavior
before moving on
T e s t
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Using Await & Print
YIFAN XING - 2018 @yifan_xing_e
TimeoutException if after
waiting for the specified
time awaitable is still not
ready
atMost may be:
A finite positive duration
Negative (no waiting is
done)
Duration.Inf for
unbounded waiting
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
ScalaTest: ScalaFutures
YIFAN XING - 2018 @yifan_xing_e
Default timeout
150ms
TestFailedException
if not finished after
timeout
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Resources: Async Debugger & Capture
YIFAN XING - 2018 @yifan_xing_e
IntelliJ Capture (2017):
Iulian Dragos - Async Debugger in Scala IDE
IntelliJ IDEA 2017.1 EAP Extends Debugger with Async Stacktraces
Developer's Explanation
Debugging Tutorial
Async Stacktraces
Stack Retention
Scala IDE Doc
Demo: Jamie Allen
Rethink the Debugger: Scala Days 2014
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
Using Async Debugger / Capture
YIFAN XING - 2018 @yifan_xing_e
Substituting its parts related
to the asynchronous code
execution with where it was
called
Sender: Async code executor
Receiver: executed code
Config exact signatures of
methods of the async code
Stores the stack and
variables info in a map
(1000 stacks), where the
key is a parameter with
the specified number.
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
YIFAN XING - 2018 @yifan_xing_e
( Sorry Alex :P )
A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
YIFAN XING - 2018 @yifan_xing_e
T H A N K Y O U
@yifan_xing_e

More Related Content

PPT
WordPress Development: Tracking Your Code With Version Control
PPTX
RabbitMQ Plugins Talk
PDF
Novidades Angular 4.x e CLI
PDF
Collibra wrojug-ontrack-20100424
PPTX
CodeOne Java Debugging Tips
PDF
TuleapCon2017 -Automating Jenkins build with Tuleap trackers
PDF
My Story & Features from .NET Core 3.0
PDF
Tale of the journey of an agile team - From dependency to freedom
WordPress Development: Tracking Your Code With Version Control
RabbitMQ Plugins Talk
Novidades Angular 4.x e CLI
Collibra wrojug-ontrack-20100424
CodeOne Java Debugging Tips
TuleapCon2017 -Automating Jenkins build with Tuleap trackers
My Story & Features from .NET Core 3.0
Tale of the journey of an agile team - From dependency to freedom

Similar to Asynchronous programming 20180607 (20)

PDF
Codemotion akka voló sobre el nido del future
PDF
Codemotion 2015 - Akka voló sobre el nido del future
PDF
Introduction to Asynchronous scala
PPTX
PDF
Scala(e) to the large. Concurrent programming in Scala and relevant Frameworks
PDF
Monix : A Birds’ eye view
PPT
PPTX
Concurrency with side-effects – cats way
PDF
Why scala is not my ideal language and what I can do with this
PDF
Learning Concurrent Programming in Scala Second Edition Aleksandar Prokopec
PDF
Learning Concurrent Programming In Scala Second Edition 2nd Edition Aleksanda...
PDF
scalar.pdf
PDF
Asynchronous Programming. Talk from ESUG2024
PDF
Learning Concurrent Programming in Scala Second Edition Aleksandar Prokopec
PDF
Learning Concurrent Programming in Scala Second Edition Aleksandar Prokopec
PDF
Learning Concurrent Programming in Scala Second Edition Aleksandar Prokopec
PPTX
4Developers 2015: Programowanie synchroniczne i asynchroniczne - dwa światy k...
ODP
Scala Future & Promises
PPTX
Fp and scala
PDF
Lecture1
Codemotion akka voló sobre el nido del future
Codemotion 2015 - Akka voló sobre el nido del future
Introduction to Asynchronous scala
Scala(e) to the large. Concurrent programming in Scala and relevant Frameworks
Monix : A Birds’ eye view
Concurrency with side-effects – cats way
Why scala is not my ideal language and what I can do with this
Learning Concurrent Programming in Scala Second Edition Aleksandar Prokopec
Learning Concurrent Programming In Scala Second Edition 2nd Edition Aleksanda...
scalar.pdf
Asynchronous Programming. Talk from ESUG2024
Learning Concurrent Programming in Scala Second Edition Aleksandar Prokopec
Learning Concurrent Programming in Scala Second Edition Aleksandar Prokopec
Learning Concurrent Programming in Scala Second Edition Aleksandar Prokopec
4Developers 2015: Programowanie synchroniczne i asynchroniczne - dwa światy k...
Scala Future & Promises
Fp and scala
Lecture1
Ad

Recently uploaded (20)

PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
A novel scalable deep ensemble learning framework for big data classification...
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
WOOl fibre morphology and structure.pdf for textiles
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
A Presentation on Artificial Intelligence
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PDF
Web App vs Mobile App What Should You Build First.pdf
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PPTX
Tartificialntelligence_presentation.pptx
PDF
project resource management chapter-09.pdf
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PPTX
A Presentation on Touch Screen Technology
PDF
Hindi spoken digit analysis for native and non-native speakers
PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Programs and apps: productivity, graphics, security and other tools
A novel scalable deep ensemble learning framework for big data classification...
SOPHOS-XG Firewall Administrator PPT.pptx
WOOl fibre morphology and structure.pdf for textiles
Unlocking AI with Model Context Protocol (MCP)
MIND Revenue Release Quarter 2 2025 Press Release
A Presentation on Artificial Intelligence
A comparative analysis of optical character recognition models for extracting...
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
Web App vs Mobile App What Should You Build First.pdf
A comparative study of natural language inference in Swahili using monolingua...
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
Tartificialntelligence_presentation.pptx
project resource management chapter-09.pdf
Univ-Connecticut-ChatGPT-Presentaion.pdf
A Presentation on Touch Screen Technology
Hindi spoken digit analysis for native and non-native speakers
1 - Historical Antecedents, Social Consideration.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Ad

Asynchronous programming 20180607

  • 1. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA YIFAN XING - 2018 ASYNCHRONOUS PROGRAMMING Yifan Xing SCALA.CONCURRENT AND MONIX! @yifan_xing_e
  • 2. 01 Synchronous vs. Asynchronous Differences Futures & Promises Debugging Async Programs Monix A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA 02 03 04 05Overview ASYNCHRONOUS PROGRAMMING: SCALA.CONCURRENT AND MONIX!
  • 3. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA Concurrency Synchronous Asynchronous Single-threaded Multi-threaded YIFAN XING - 2018 @yifan_xing_e
  • 4. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA Synchronous: Single-threaded YIFAN XING - 2018 Task 1 Task 2 Task 3 @yifan_xing_e
  • 5. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA Synchronous: Multi-threaded YIFAN XING - 2018 Task 1 Task 2 Task 3 @yifan_xing_e
  • 6. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA Asynchronous: Single-threaded YIFAN XING - 2018 Task 1 Task 2 Task 3 @yifan_xing_e
  • 7. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA Asynchronous: Multi-threaded YIFAN XING - 2018 Task 1 Task 2 Task 3 @yifan_xing_e
  • 9. YIFAN XING - 2018 Scala.concurrent: Future Computation Incomplete: Computation Completed: Future is not completed Future is completed: with a Value => Success Future is completed: with an Exception => Failure An object holding a value which may become available at some point Immutable A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALAA TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA @yifan_xing_e Future
  • 10. YIFAN XING - 2018 Example: Callbacks Multiple callbacks may be registered; NO guarantee that they will be executed in a particular order. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA @yifan_xing_e
  • 11. YIFAN XING - 2018 Example: Callbacks Chain callbacks Allow one to enforce callbacks to be executed in a specified order. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA @yifan_xing_e
  • 12. YIFAN XING - 2018 Example: Callbacks A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA @yifan_xing_e Exception in callback: NOT propagated to the subsequent andThen callbacks.
  • 13. YIFAN XING - 2018 Example: Transformations A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA @yifan_xing_e
  • 14. YIFAN XING - 2018 Example: Transformations More generic & flexible A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA @yifan_xing_e
  • 15. YIFAN XING - 2018 Example: Transformations If no match cases or original future contains a valid result: New future will contain the same result as the original one. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALAA TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA @yifan_xing_e Evaluated only after a Failure
  • 16. YIFAN XING - 2018 Example: Transformations If both futures failed, the resulting future holds the throwable object of the first future. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA @yifan_xing_e
  • 17. YIFAN XING - 2018 Scala.concurrent: Promises A writable, single-assignment container Can create a Future Can complete a Future, only ONCE A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA @yifan_xing_e Promise:
  • 18. YIFAN XING - 2018 Example: Promises A Promise can be completed at most ONCE. If the promise has already been fulfilled, failed or has timed out, calling this method will throw an IllegalStateException. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA @yifan_xing_e
  • 19. YIFAN XING - 2018 Example: Promises If the promise has already been completed returns false, or true otherwise. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA @yifan_xing_e
  • 20. YIFAN XING - 2018 A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA Problem in A Client-facing Interface @yifan_xing_e
  • 21. YIFAN XING - 2018 A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA p.future Problem in A Client-facing Interface @yifan_xing_e
  • 23. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA What is Monix? Asynchronous, event-based programs Data type: Task, etc. "Factory" of Future instances Lazy & asynchronous computations YIFAN XING - 2018 @yifan_xing_e
  • 24. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA Monix: Task YIFAN XING - 2018 Lazily evaluated Evaluated when call runAsync Trigger side effects @yifan_xing_e
  • 25. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA Monix: Task Callback YIFAN XING - 2018 Eagerly evaluate task Register callbacks Similar to Future#onComplete @yifan_xing_e
  • 26. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA Monix: Eager/ Lazy YIFAN XING - 2018 Evaluate eagerly Equivalent to Future#successful Defer eager evaluation Similar to Task#eval @yifan_xing_e
  • 27. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA Monix: Memoization YIFAN XING - 2018 Evaluated lazily Not memoized, recompute each time the Task is executed. Evaluate lazily Evaluated exactly ONCE Result is memoized @yifan_xing_e
  • 28. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA Monix: MemoizeOnSuccess YIFAN XING - 2018 Exceptions are not cached. Only cache the first successful result @yifan_xing_e
  • 29. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA Monix: Alternative Thread Pool YIFAN XING - 2018 Overrides default scheduler Overriding the "default" scheduler can only happen ONCE Task is immutable @yifan_xing_e
  • 30. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA Monix: CancelableFuture YIFAN XING - 2018 Calling it multiple times has the same side- effect as calling it only once. @yifan_xing_e
  • 31. - A value - Executed when constructed - Eager evaluation - ExecutionContext needed whenever use       operators A function -  Execution controllable by user -  Lazy evaluation -  ExecutionScheduler needed whenever -   use runAsync    MonixFuture Eager/Lazy A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
  • 32. - Memoized by default - Evaluated once - Store result Explicitly use memoization operators -  Evaluated whenever needed -  Referential transparency -  MonixFuture Memoization A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
  • 33. - Sometimes errors are                             not propagated Scheduler.reportFailure -  Defaults to System.err -  Allow customized logging tools -  MonixFuture ErrorHandling A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
  • 34. Future Monix A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
  • 35. FutureMonix A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
  • 36. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA Debugging BEST PRACTICES In Asynchronous Programs @yifan_xing_e
  • 37. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA
  • 38. Writing Async Code 1. Rethink before adding more code 2. Adding more code to fix problems will usually add more bugs D e b u g 1. Test code in isolation 2. Observe what is happening 3. Confirm behavior before moving on T e s t
  • 39. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA Using Await & Print YIFAN XING - 2018 @yifan_xing_e TimeoutException if after waiting for the specified time awaitable is still not ready atMost may be: A finite positive duration Negative (no waiting is done) Duration.Inf for unbounded waiting
  • 40. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA ScalaTest: ScalaFutures YIFAN XING - 2018 @yifan_xing_e Default timeout 150ms TestFailedException if not finished after timeout
  • 41. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA Resources: Async Debugger & Capture YIFAN XING - 2018 @yifan_xing_e IntelliJ Capture (2017): Iulian Dragos - Async Debugger in Scala IDE IntelliJ IDEA 2017.1 EAP Extends Debugger with Async Stacktraces Developer's Explanation Debugging Tutorial Async Stacktraces Stack Retention Scala IDE Doc Demo: Jamie Allen Rethink the Debugger: Scala Days 2014
  • 42. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA Using Async Debugger / Capture YIFAN XING - 2018 @yifan_xing_e Substituting its parts related to the asynchronous code execution with where it was called Sender: Async code executor Receiver: executed code Config exact signatures of methods of the async code Stores the stack and variables info in a map (1000 stacks), where the key is a parameter with the specified number.
  • 43. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA YIFAN XING - 2018 @yifan_xing_e ( Sorry Alex :P )
  • 44. A TOUR OF ASYNCHRONOUS PROGRAMMING IN SCALA YIFAN XING - 2018 @yifan_xing_e
  • 45. T H A N K Y O U @yifan_xing_e