Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

of

Back to the CompletableFuture: Concurrency in Action Slide 1 Back to the CompletableFuture: Concurrency in Action Slide 2 Back to the CompletableFuture: Concurrency in Action Slide 3 Back to the CompletableFuture: Concurrency in Action Slide 4 Back to the CompletableFuture: Concurrency in Action Slide 5 Back to the CompletableFuture: Concurrency in Action Slide 6 Back to the CompletableFuture: Concurrency in Action Slide 7 Back to the CompletableFuture: Concurrency in Action Slide 8 Back to the CompletableFuture: Concurrency in Action Slide 9 Back to the CompletableFuture: Concurrency in Action Slide 10 Back to the CompletableFuture: Concurrency in Action Slide 11 Back to the CompletableFuture: Concurrency in Action Slide 12 Back to the CompletableFuture: Concurrency in Action Slide 13 Back to the CompletableFuture: Concurrency in Action Slide 14 Back to the CompletableFuture: Concurrency in Action Slide 15 Back to the CompletableFuture: Concurrency in Action Slide 16 Back to the CompletableFuture: Concurrency in Action Slide 17 Back to the CompletableFuture: Concurrency in Action Slide 18 Back to the CompletableFuture: Concurrency in Action Slide 19 Back to the CompletableFuture: Concurrency in Action Slide 20 Back to the CompletableFuture: Concurrency in Action Slide 21 Back to the CompletableFuture: Concurrency in Action Slide 22 Back to the CompletableFuture: Concurrency in Action Slide 23 Back to the CompletableFuture: Concurrency in Action Slide 24 Back to the CompletableFuture: Concurrency in Action Slide 25 Back to the CompletableFuture: Concurrency in Action Slide 26 Back to the CompletableFuture: Concurrency in Action Slide 27 Back to the CompletableFuture: Concurrency in Action Slide 28 Back to the CompletableFuture: Concurrency in Action Slide 29 Back to the CompletableFuture: Concurrency in Action Slide 30 Back to the CompletableFuture: Concurrency in Action Slide 31 Back to the CompletableFuture: Concurrency in Action Slide 32 Back to the CompletableFuture: Concurrency in Action Slide 33 Back to the CompletableFuture: Concurrency in Action Slide 34 Back to the CompletableFuture: Concurrency in Action Slide 35 Back to the CompletableFuture: Concurrency in Action Slide 36 Back to the CompletableFuture: Concurrency in Action Slide 37 Back to the CompletableFuture: Concurrency in Action Slide 38 Back to the CompletableFuture: Concurrency in Action Slide 39 Back to the CompletableFuture: Concurrency in Action Slide 40 Back to the CompletableFuture: Concurrency in Action Slide 41 Back to the CompletableFuture: Concurrency in Action Slide 42 Back to the CompletableFuture: Concurrency in Action Slide 43 Back to the CompletableFuture: Concurrency in Action Slide 44 Back to the CompletableFuture: Concurrency in Action Slide 45 Back to the CompletableFuture: Concurrency in Action Slide 46 Back to the CompletableFuture: Concurrency in Action Slide 47 Back to the CompletableFuture: Concurrency in Action Slide 48 Back to the CompletableFuture: Concurrency in Action Slide 49 Back to the CompletableFuture: Concurrency in Action Slide 50 Back to the CompletableFuture: Concurrency in Action Slide 51 Back to the CompletableFuture: Concurrency in Action Slide 52 Back to the CompletableFuture: Concurrency in Action Slide 53 Back to the CompletableFuture: Concurrency in Action Slide 54 Back to the CompletableFuture: Concurrency in Action Slide 55 Back to the CompletableFuture: Concurrency in Action Slide 56 Back to the CompletableFuture: Concurrency in Action Slide 57 Back to the CompletableFuture: Concurrency in Action Slide 58 Back to the CompletableFuture: Concurrency in Action Slide 59 Back to the CompletableFuture: Concurrency in Action Slide 60 Back to the CompletableFuture: Concurrency in Action Slide 61 Back to the CompletableFuture: Concurrency in Action Slide 62 Back to the CompletableFuture: Concurrency in Action Slide 63 Back to the CompletableFuture: Concurrency in Action Slide 64 Back to the CompletableFuture: Concurrency in Action Slide 65 Back to the CompletableFuture: Concurrency in Action Slide 66 Back to the CompletableFuture: Concurrency in Action Slide 67 Back to the CompletableFuture: Concurrency in Action Slide 68 Back to the CompletableFuture: Concurrency in Action Slide 69 Back to the CompletableFuture: Concurrency in Action Slide 70 Back to the CompletableFuture: Concurrency in Action Slide 71 Back to the CompletableFuture: Concurrency in Action Slide 72 Back to the CompletableFuture: Concurrency in Action Slide 73 Back to the CompletableFuture: Concurrency in Action Slide 74 Back to the CompletableFuture: Concurrency in Action Slide 75 Back to the CompletableFuture: Concurrency in Action Slide 76 Back to the CompletableFuture: Concurrency in Action Slide 77 Back to the CompletableFuture: Concurrency in Action Slide 78 Back to the CompletableFuture: Concurrency in Action Slide 79 Back to the CompletableFuture: Concurrency in Action Slide 80 Back to the CompletableFuture: Concurrency in Action Slide 81 Back to the CompletableFuture: Concurrency in Action Slide 82 Back to the CompletableFuture: Concurrency in Action Slide 83 Back to the CompletableFuture: Concurrency in Action Slide 84 Back to the CompletableFuture: Concurrency in Action Slide 85 Back to the CompletableFuture: Concurrency in Action Slide 86 Back to the CompletableFuture: Concurrency in Action Slide 87 Back to the CompletableFuture: Concurrency in Action Slide 88 Back to the CompletableFuture: Concurrency in Action Slide 89 Back to the CompletableFuture: Concurrency in Action Slide 90 Back to the CompletableFuture: Concurrency in Action Slide 91 Back to the CompletableFuture: Concurrency in Action Slide 92 Back to the CompletableFuture: Concurrency in Action Slide 93 Back to the CompletableFuture: Concurrency in Action Slide 94 Back to the CompletableFuture: Concurrency in Action Slide 95 Back to the CompletableFuture: Concurrency in Action Slide 96 Back to the CompletableFuture: Concurrency in Action Slide 97 Back to the CompletableFuture: Concurrency in Action Slide 98 Back to the CompletableFuture: Concurrency in Action Slide 99 Back to the CompletableFuture: Concurrency in Action Slide 100 Back to the CompletableFuture: Concurrency in Action Slide 101 Back to the CompletableFuture: Concurrency in Action Slide 102 Back to the CompletableFuture: Concurrency in Action Slide 103 Back to the CompletableFuture: Concurrency in Action Slide 104 Back to the CompletableFuture: Concurrency in Action Slide 105 Back to the CompletableFuture: Concurrency in Action Slide 106 Back to the CompletableFuture: Concurrency in Action Slide 107 Back to the CompletableFuture: Concurrency in Action Slide 108 Back to the CompletableFuture: Concurrency in Action Slide 109 Back to the CompletableFuture: Concurrency in Action Slide 110 Back to the CompletableFuture: Concurrency in Action Slide 111 Back to the CompletableFuture: Concurrency in Action Slide 112 Back to the CompletableFuture: Concurrency in Action Slide 113 Back to the CompletableFuture: Concurrency in Action Slide 114 Back to the CompletableFuture: Concurrency in Action Slide 115 Back to the CompletableFuture: Concurrency in Action Slide 116 Back to the CompletableFuture: Concurrency in Action Slide 117 Back to the CompletableFuture: Concurrency in Action Slide 118 Back to the CompletableFuture: Concurrency in Action Slide 119 Back to the CompletableFuture: Concurrency in Action Slide 120 Back to the CompletableFuture: Concurrency in Action Slide 121 Back to the CompletableFuture: Concurrency in Action Slide 122 Back to the CompletableFuture: Concurrency in Action Slide 123 Back to the CompletableFuture: Concurrency in Action Slide 124 Back to the CompletableFuture: Concurrency in Action Slide 125 Back to the CompletableFuture: Concurrency in Action Slide 126 Back to the CompletableFuture: Concurrency in Action Slide 127 Back to the CompletableFuture: Concurrency in Action Slide 128 Back to the CompletableFuture: Concurrency in Action Slide 129 Back to the CompletableFuture: Concurrency in Action Slide 130 Back to the CompletableFuture: Concurrency in Action Slide 131 Back to the CompletableFuture: Concurrency in Action Slide 132 Back to the CompletableFuture: Concurrency in Action Slide 133 Back to the CompletableFuture: Concurrency in Action Slide 134 Back to the CompletableFuture: Concurrency in Action Slide 135 Back to the CompletableFuture: Concurrency in Action Slide 136 Back to the CompletableFuture: Concurrency in Action Slide 137 Back to the CompletableFuture: Concurrency in Action Slide 138 Back to the CompletableFuture: Concurrency in Action Slide 139 Back to the CompletableFuture: Concurrency in Action Slide 140 Back to the CompletableFuture: Concurrency in Action Slide 141 Back to the CompletableFuture: Concurrency in Action Slide 142 Back to the CompletableFuture: Concurrency in Action Slide 143 Back to the CompletableFuture: Concurrency in Action Slide 144 Back to the CompletableFuture: Concurrency in Action Slide 145 Back to the CompletableFuture: Concurrency in Action Slide 146 Back to the CompletableFuture: Concurrency in Action Slide 147 Back to the CompletableFuture: Concurrency in Action Slide 148 Back to the CompletableFuture: Concurrency in Action Slide 149
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

1 Like

Share

Download to read offline

Back to the CompletableFuture: Concurrency in Action

Download to read offline

Callback hell is a known way to give any JavaScript developer nightmares. However, Java developers are not much better off since anything concurrency and multithreading related gives us cold sweats.

With Threads and Runnables being the very first (and often last) things we used in Java, these classes gave many of us impression of and appreciation for complexities of concurrency. As a result, many developers abandoned the idea of ever touching thread management in Java and focused on a single-threaded development.

Fear no more! The world of concurrency in Java has changed since JDK8 and continues getting better. In this talk, we discuss improvements around Concurrency API of JDK5 and the power of asynchronous programming of CompletableFutures post-JDK8. Our goal is to break out of the fear of concurrency in Java and to learn about a new, declarative way of thread programming.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Back to the CompletableFuture: Concurrency in Action

  1. 1. Back to the CompletableFuture Dmitry Vinnik @DmitryVinnik dvinnik.com
  2. 2. What are our goals? @DmitryVinnik dvinnik.com
  3. 3. Goals Concurrency and Its Forms Misconceptions of Concurrency Workflows: How’s and Why’s
  4. 4. Why Concurrency? @DmitryVinnik dvinnik.com
  5. 5. Multi-Core Motivation Microservices CCSs @DmitryVinnik dvinnik.com
  6. 6. Conclusion? @DmitryVinnik dvinnik.com
  7. 7. Concurrency is a New Reality @DmitryVinnik dvinnik.com
  8. 8. Concurrency is a Reality @DmitryVinnik dvinnik.com
  9. 9. But! @DmitryVinnik dvinnik.com
  10. 10. What’s in it for us? @DmitryVinnik dvinnik.com
  11. 11. Benefits No Idling ↑ UX Abstraction @DmitryVinnik dvinnik.com
  12. 12. Only good parts, right? @DmitryVinnik dvinnik.com
  13. 13. Complexities Thread Safety Performanc e Liveness SDLC @DmitryVinnik dvinnik.com
  14. 14. Complex @DmitryVinnik dvinnik.com
  15. 15. But @DmitryVinnik dvinnik.com
  16. 16. Beneficial @DmitryVinnik dvinnik.com
  17. 17. Beautiful @DmitryVinnik dvinnik.com
  18. 18. Remind anything? @DmitryVinnik dvinnik.com
  19. 19. Concurrency @DmitryVinnik dvinnik.com
  20. 20. is like @DmitryVinnik dvinnik.com
  21. 21. @DmitryVinnik dvinnik.com
  22. 22. Concurrency & Sharks @DmitryVinnik dvinnik.com
  23. 23. Concurrency & Sharks @DmitryVinnik dvinnik.com
  24. 24. Fear @DmitryVinnik dvinnik.com
  25. 25. Fear Admiration @DmitryVinnik dvinnik.com
  26. 26. @DmitryVinnik dvinnik.com
  27. 27. Agenda Single Threading Multi Threading Workflows Single Threading Multi Threading Workflows Concurrency in Java Concurrency in Java
  28. 28. Do I even care? @DmitryVinnik dvinnik.com
  29. 29. “My app is single threaded” @DmitryVinnik dvinnik.com
  30. 30. “It is too complicated” @DmitryVinnik dvinnik.com
  31. 31. “Not broken, don't touch it” @DmitryVinnik dvinnik.com
  32. 32. Design For Concurrency Programming by Coincidence Design by Contract Temporal Coupling Immutability & Atomicity @DmitryVinnik dvinnik.com
  33. 33. Programming by Coincidence @DmitryVinnik dvinnik.com
  34. 34. “Can't tell if it is broken, or if it never worked” Programming by Coincidence @DmitryVinnik dvinnik.com
  35. 35. Programming by Coincidence @DmitryVinnik dvinnik.com
  36. 36. Design by Contract @DmitryVinnik dvinnik.com
  37. 37. “Require No More, Promise No Less” Design by Contract Quote from Bertrand Meyer, “Design by Contract” @DmitryVinnik dvinnik.com
  38. 38. Design by Contract @DmitryVinnik dvinnik.com
  39. 39. Temporal Coupling @DmitryVinnik dvinnik.com
  40. 40. “Do time & order matter?” Temporal Coupling @DmitryVinnik dvinnik.com
  41. 41. @DmitryVinnik dvinnik.com Temporal Coupling
  42. 42. Agenda Single Threading Multi Threading Workflows Single Threading Multi Threading Workflows Concurrency in Java Concurrency in Java Single Threading Multi Threading
  43. 43. Multithreading @DmitryVinnik dvinnik.com
  44. 44. What forms can it take? @DmitryVinnik dvinnik.com
  45. 45. Multithreading Forms Concurrent Form Parallel Form Asynchronous Form Concurrent Form Parallel Form Asynchronous Form @DmitryVinnik dvinnik.com
  46. 46. Form: Concurrency @DmitryVinnik dvinnik.com
  47. 47. Form: Concurrency Multiple Tasks Logically Simultaneous Multiple CPUs
  48. 48. Too Abstract? @DmitryVinnik dvinnik.com
  49. 49. Let’s Code Something @DmitryVinnik dvinnik.com
  50. 50. Goal: Develop App @DmitryVinnik dvinnik.com Form: Concurrency
  51. 51. What do we need? @DmitryVinnik dvinnik.com Form: Concurrency
  52. 52. Coffee, Code, Coffee, Code, Coffee, Code... T1 @DmitryVinnik dvinnik.com Form: Concurrency
  53. 53. Multithreading Forms Concurrent Form Parallel Form Asynchronous Form Concurrent Form Parallel Form Asynchronous Form @DmitryVinnik dvinnik.com Concurrent Form Parallel Form
  54. 54. Form: Parallelism dvinnik.com
  55. 55. Form: Parallelism Multiple (Sub)Tasks Physically Simultaneous Multiple CPUs
  56. 56. Goal: Develop App @DmitryVinnik dvinnik.com Form: Parallelism
  57. 57. But now @DmitryVinnik dvinnik.com Form: Parallelism
  58. 58. As Ambidexter @DmitryVinnik dvinnik.com Form: Parallelism
  59. 59. T1 T2 @DmitryVinnik dvinnik.com Form: Parallelism
  60. 60. Multithreading Forms Concurrent Form Parallel Form Asynchronous Form Concurrent Form Parallel Form Asynchronous Form @DmitryVinnik dvinnik.com Concurrent Form Parallel FormParallel Form Asynchronous Form
  61. 61. Form: Asynchrony dvinnik.com
  62. 62. Fire & Forget Non-Blocking Multiple CPUs @DmitryVinnik dvinnik.com Form: Parallelism
  63. 63. Goal: Develop App @DmitryVinnik dvinnik.com Form: Asynchrony
  64. 64. Question @DmitryVinnik dvinnik.com Form: Asynchrony
  65. 65. Where does coffee come from? @DmitryVinnik dvinnik.com Form: Asynchrony
  66. 66. Coffee Machine @DmitryVinnik dvinnik.com Form: Asynchrony
  67. 67. T1 aT1 @DmitryVinnik dvinnik.com Form: Asynchrony
  68. 68. Agenda Single Threading Multi Threading Workflows Single Threading Multi Threading Workflows Concurrency in Java Concurrency in Java Single Threading Multi Threading Multi Threading Concurrency in Java
  69. 69. First... @DmitryVinnik dvinnik.com
  70. 70. There were Runnable & Thread @DmitryVinnik dvinnik.com
  71. 71. Runnable @DmitryVinnik dvinnik.com
  72. 72. No Input Runnable No Output No Exception @DmitryVinnik dvinnik.com
  73. 73. Runnable Based Thread Min. 1 Main Thread Creation Overhead
  74. 74. Then JDK5 was released @DmitryVinnik dvinnik.com
  75. 75. Welcome Concurrency API @DmitryVinnik dvinnik.com
  76. 76. Concurrency API ThreadLocal Atomic Operations Thread Safe Collections And More @DmitryVinnik dvinnik.com
  77. 77. Concurrency API ThreadLocal Atomic Operations Thread Safe Collections @DmitryVinnik dvinnik.com ThreadLocal Atomic Operations Thread Safe Collections
  78. 78. ThreadLocal @DmitryVinnik dvinnik.com
  79. 79. ThreadLocal Resource Confinement Memory Leaks Global Fields
  80. 80. Concurrency API ThreadLocal Atomic Operations Thread Safe Collections @DmitryVinnik dvinnik.com ThreadLocal Atomic Operations Thread Safe Collections ThreadLocal Atomic Operations
  81. 81. Atomic Operations @DmitryVinnik dvinnik.com
  82. 82. Atomic Operations Compound Operations ↑ Speed Compare & Swap
  83. 83. Concurrency API ThreadLocal Atomic Operations Thread Safe Collections @DmitryVinnik dvinnik.com ThreadLocal Atomic Operations Thread Safe Collections ThreadLocal Atomic Operations Atomic Operations Thread Safe Collections Thread Safe Collections
  84. 84. Thread Safe Collections @DmitryVinnik dvinnik.com ConcurrentHashMap
  85. 85. Thread Safe Collections Compound Operations ↑ Speed Configurable Concurrency
  86. 86. Agenda Single Threading Multi Threading Workflows Single Threading Multi Threading Workflows Concurrency in Java Concurrency in Java Single Threading Multi Threading Multi Threading Concurrency in Java Concurrency in Java Workflows
  87. 87. Where do we start? @DmitryVinnik dvinnik.com
  88. 88. Promises in JavaScript Future/ Callable Executor Framework Completable Future Workflows Promises in JavaScript Future/ Callable Executor Framework Completable Future @DmitryVinnik dvinnik.com
  89. 89. Callback Hell in JavaScript @DmitryVinnik dvinnik.com
  90. 90. Callback Hell in JavaScript Verbose Intuitive @DmitryVinnik dvinnik.com
  91. 91. How do we fix this? @DmitryVinnik dvinnik.com
  92. 92. Promises in JavaScript @DmitryVinnik dvinnik.com
  93. 93. Promises in JavaScript Before After @DmitryVinnik dvinnik.com
  94. 94. Promises in JavaScript Future/ Callable Executor Framework Completable Future Workflows Promises in JavaScript Future/ Callable Executor Framework Completable Future @DmitryVinnik dvinnik.com Promises in JavaScript Future/ Callable
  95. 95. Runnable -> Thread @DmitryVinnik dvinnik.com
  96. 96. Callable -> Future @DmitryVinnik dvinnik.com
  97. 97. Callable @DmitryVinnik dvinnik.com
  98. 98. No Input Callable Has Output Has Exception
  99. 99. Future @DmitryVinnik dvinnik.com
  100. 100. Completed in the Future Future Executor Framework @DmitryVinnik dvinnik.com
  101. 101. Future sounds great! @DmitryVinnik dvinnik.com
  102. 102. But how do we use it? @DmitryVinnik dvinnik.com
  103. 103. Promises in JavaScript Future/ Callable Executor Framework Completable Future Workflows Promises in JavaScript Future/ Callable Executor Framework Completable Future @DmitryVinnik dvinnik.com Promises in JavaScript Future/ Callable Future/ Callable Executor Framework
  104. 104. Executor Framework @DmitryVinnik dvinnik.com
  105. 105. Executor Framework Thread Management Declarative Model @DmitryVinnik dvinnik.com
  106. 106. Thread Pool @DmitryVinnik dvinnik.com
  107. 107. Thread Pool Thread Management Thread Configuration @DmitryVinnik dvinnik.com
  108. 108. Too many arguments... @DmitryVinnik dvinnik.com
  109. 109. Factories to the rescue! @DmitryVinnik dvinnik.com
  110. 110. Executor Factories @DmitryVinnik dvinnik.com
  111. 111. Executor Factories Single Thread Pool Cached Thread Pool Fixed Thread Pool Scheduled Thread Pool Work Stealing Pool@DmitryVinnik dvinnik.com
  112. 112. Executor + Thread Pools @DmitryVinnik dvinnik.com
  113. 113. ExecutorService @DmitryVinnik dvinnik.com
  114. 114. ExecutorService Async Tasks Thread Pools @DmitryVinnik dvinnik.com
  115. 115. Are we done? @DmitryVinnik dvinnik.com
  116. 116. Future is not perfect! @DmitryVinnik dvinnik.com
  117. 117. Not really... @DmitryVinnik dvinnik.com
  118. 118. Future Pitfalls Blocking Operations No Result Chaining Future Combination Exception Handling @DmitryVinnik dvinnik.com
  119. 119. Blocking Result Retrieval @DmitryVinnik dvinnik.com
  120. 120. Blocking Result Retrieval Blocking Get Use Timeout @DmitryVinnik dvinnik.com
  121. 121. No Futures Chaining @DmitryVinnik dvinnik.com
  122. 122. Futures Chaining No Workflows Callback Hell @DmitryVinnik dvinnik.com
  123. 123. Futures Combination @DmitryVinnik dvinnik.com
  124. 124. Futures Combination Blocking InvokeAny Blocking InvokeAll() @DmitryVinnik dvinnik.com
  125. 125. Exception Handling @DmitryVinnik dvinnik.com
  126. 126. Exception Handling Multiple Exceptions On Most Operations @DmitryVinnik dvinnik.com
  127. 127. So many issues... @DmitryVinnik dvinnik.com
  128. 128. No worries! @DmitryVinnik dvinnik.com
  129. 129. CompletableFuture is here to help @DmitryVinnik dvinnik.com
  130. 130. Promises in JavaScript Future/ Callable Executor Framework Completable Future Workflows Promises in JavaScript Future/ Callable Executor Framework Completable Future @DmitryVinnik dvinnik.com Promises in JavaScript Future/ Callable Future/ Callable Executor Framework Executor Framework Completable Future
  131. 131. CompletableFuture @DmitryVinnik dvinnik.com
  132. 132. CompletableFuture Transformation Composition Chaining Combination
  133. 133. Future Pitfalls Blocking Operations No Result Chaining Future Combination Exception Handling @DmitryVinnik dvinnik.com
  134. 134. Let’s handle them with CompletableFuture! @DmitryVinnik dvinnik.com
  135. 135. Transformation/Chaining @DmitryVinnik dvinnik.com
  136. 136. Transformation/Chainin g Workflows ForkJoin Pool @DmitryVinnik dvinnik.com
  137. 137. Tasks Composition @DmitryVinnik dvinnik.com
  138. 138. Tasks Composition Workflows Flat Map @DmitryVinnik dvinnik.com
  139. 139. Controllable Futures @DmitryVinnik dvinnik.com
  140. 140. Controllable Futures Completable Timeout/ Default Value @DmitryVinnik dvinnik.com
  141. 141. Multiple Futures Control @DmitryVinnik dvinnik.com
  142. 142. Multiple Futures Control AllOf/AnyOf Results Not Formatted @DmitryVinnik dvinnik.com
  143. 143. Tasks Combination @DmitryVinnik dvinnik.com
  144. 144. Tasks Combination Collect Results Sync/Async @DmitryVinnik dvinnik.com
  145. 145. Exception Handling @DmitryVinnik dvinnik.com
  146. 146. Exception Handling @DmitryVinnik dvinnik.com
  147. 147. Call For Action Embrace Concurrency Review Your Application Continue Learning @DmitryVinnik dvinnik.com
  148. 148. Q/A @DmitryVinnik dvinnik.com
  149. 149. About Speaker Twitter: @DmitryVinnik Blog: dvinnik.com LinkedIn: in/dmitry-vinnik/ Email: dmitry@dvinnik.com
  • eniton

    Mar. 17, 2019

Callback hell is a known way to give any JavaScript developer nightmares. However, Java developers are not much better off since anything concurrency and multithreading related gives us cold sweats. With Threads and Runnables being the very first (and often last) things we used in Java, these classes gave many of us impression of and appreciation for complexities of concurrency. As a result, many developers abandoned the idea of ever touching thread management in Java and focused on a single-threaded development. Fear no more! The world of concurrency in Java has changed since JDK8 and continues getting better. In this talk, we discuss improvements around Concurrency API of JDK5 and the power of asynchronous programming of CompletableFutures post-JDK8. Our goal is to break out of the fear of concurrency in Java and to learn about a new, declarative way of thread programming.

Views

Total views

160

On Slideshare

0

From embeds

0

Number of embeds

91

Actions

Downloads

1

Shares

0

Comments

0

Likes

1

×