SlideShare une entreprise Scribd logo
1  sur  149
Back to the
CompletableFuture
Dmitry Vinnik
@DmitryVinnik dvinnik.com
What are our goals?
@DmitryVinnik dvinnik.com
Goals
Concurrency and Its Forms
Misconceptions of Concurrency
Workflows: How’s and Why’s
Why Concurrency?
@DmitryVinnik dvinnik.com
Multi-Core
Motivation
Microservices
CCSs
@DmitryVinnik dvinnik.com
Conclusion?
@DmitryVinnik dvinnik.com
Concurrency is
a New Reality
@DmitryVinnik dvinnik.com
Concurrency is
a Reality
@DmitryVinnik dvinnik.com
But!
@DmitryVinnik dvinnik.com
What’s in it for us?
@DmitryVinnik dvinnik.com
Benefits
No Idling ↑ UX
Abstraction
@DmitryVinnik dvinnik.com
Only good parts, right?
@DmitryVinnik dvinnik.com
Complexities
Thread
Safety
Performanc
e
Liveness
SDLC
@DmitryVinnik dvinnik.com
Complex
@DmitryVinnik dvinnik.com
But
@DmitryVinnik dvinnik.com
Beneficial
@DmitryVinnik dvinnik.com
Beautiful
@DmitryVinnik dvinnik.com
Remind anything?
@DmitryVinnik dvinnik.com
Concurrency
@DmitryVinnik dvinnik.com
is like
@DmitryVinnik dvinnik.com
@DmitryVinnik dvinnik.com
Concurrency & Sharks
@DmitryVinnik dvinnik.com
Concurrency & Sharks
@DmitryVinnik dvinnik.com
Fear
@DmitryVinnik dvinnik.com
Fear Admiration
@DmitryVinnik dvinnik.com
@DmitryVinnik dvinnik.com
Agenda
Single
Threading
Multi
Threading
Workflows
Single
Threading
Multi
Threading
Workflows
Concurrency
in Java
Concurrency
in Java
Do I even care?
@DmitryVinnik dvinnik.com
“My app is single threaded”
@DmitryVinnik dvinnik.com
“It is too complicated”
@DmitryVinnik dvinnik.com
“Not broken, don't touch it”
@DmitryVinnik dvinnik.com
Design For Concurrency
Programming
by Coincidence
Design by
Contract
Temporal
Coupling
Immutability
&
Atomicity
@DmitryVinnik dvinnik.com
Programming by
Coincidence
@DmitryVinnik dvinnik.com
“Can't tell if it is broken, or
if it never worked”
Programming by Coincidence
@DmitryVinnik dvinnik.com
Programming by Coincidence
@DmitryVinnik dvinnik.com
Design by Contract
@DmitryVinnik dvinnik.com
“Require No More,
Promise No Less”
Design by Contract
Quote from Bertrand Meyer,
“Design by Contract”
@DmitryVinnik dvinnik.com
Design by Contract
@DmitryVinnik dvinnik.com
Temporal Coupling
@DmitryVinnik dvinnik.com
“Do time & order matter?”
Temporal Coupling
@DmitryVinnik dvinnik.com
@DmitryVinnik dvinnik.com
Temporal Coupling
Agenda
Single
Threading
Multi
Threading
Workflows
Single
Threading
Multi
Threading
Workflows
Concurrency
in Java
Concurrency
in Java
Single
Threading
Multi
Threading
Multithreading
@DmitryVinnik dvinnik.com
What forms can it take?
@DmitryVinnik dvinnik.com
Multithreading Forms
Concurrent Form
Parallel Form
Asynchronous Form
Concurrent Form
Parallel Form
Asynchronous Form
@DmitryVinnik dvinnik.com
Form: Concurrency
@DmitryVinnik dvinnik.com
Form: Concurrency
Multiple
Tasks
Logically
Simultaneous
Multiple CPUs
Too Abstract?
@DmitryVinnik dvinnik.com
Let’s Code Something
@DmitryVinnik dvinnik.com
Goal: Develop App
@DmitryVinnik dvinnik.com
Form: Concurrency
What do we need?
@DmitryVinnik dvinnik.com
Form: Concurrency
Coffee, Code, Coffee, Code, Coffee, Code...
T1
@DmitryVinnik dvinnik.com
Form: Concurrency
Multithreading Forms
Concurrent Form
Parallel Form
Asynchronous Form
Concurrent Form
Parallel Form
Asynchronous Form
@DmitryVinnik dvinnik.com
Concurrent Form
Parallel Form
Form: Parallelism
dvinnik.com
Form: Parallelism
Multiple
(Sub)Tasks
Physically
Simultaneous
Multiple CPUs
Goal: Develop App
@DmitryVinnik dvinnik.com
Form: Parallelism
But now
@DmitryVinnik dvinnik.com
Form: Parallelism
As Ambidexter
@DmitryVinnik dvinnik.com
Form: Parallelism
T1
T2
@DmitryVinnik dvinnik.com
Form: Parallelism
Multithreading Forms
Concurrent Form
Parallel Form
Asynchronous Form
Concurrent Form
Parallel Form
Asynchronous Form
@DmitryVinnik dvinnik.com
Concurrent Form
Parallel FormParallel Form
Asynchronous Form
Form: Asynchrony
dvinnik.com
Fire & Forget
Non-Blocking
Multiple CPUs
@DmitryVinnik dvinnik.com
Form: Parallelism
Goal: Develop App
@DmitryVinnik dvinnik.com
Form: Asynchrony
Question
@DmitryVinnik dvinnik.com
Form: Asynchrony
Where does coffee
come from?
@DmitryVinnik dvinnik.com
Form: Asynchrony
Coffee Machine
@DmitryVinnik dvinnik.com
Form: Asynchrony
T1
aT1
@DmitryVinnik dvinnik.com
Form: Asynchrony
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
First...
@DmitryVinnik dvinnik.com
There were
Runnable & Thread
@DmitryVinnik dvinnik.com
Runnable
@DmitryVinnik dvinnik.com
No Input
Runnable
No Output
No Exception
@DmitryVinnik dvinnik.com
Runnable
Based
Thread
Min. 1 Main
Thread
Creation
Overhead
Then JDK5 was released
@DmitryVinnik dvinnik.com
Welcome
Concurrency API
@DmitryVinnik dvinnik.com
Concurrency API
ThreadLocal
Atomic
Operations
Thread Safe
Collections
And More
@DmitryVinnik dvinnik.com
Concurrency API
ThreadLocal
Atomic
Operations
Thread Safe
Collections
@DmitryVinnik dvinnik.com
ThreadLocal
Atomic
Operations
Thread Safe
Collections
ThreadLocal
@DmitryVinnik dvinnik.com
ThreadLocal
Resource
Confinement
Memory Leaks
Global Fields
Concurrency API
ThreadLocal
Atomic
Operations
Thread Safe
Collections
@DmitryVinnik dvinnik.com
ThreadLocal
Atomic
Operations
Thread Safe
Collections
ThreadLocal
Atomic
Operations
Atomic Operations
@DmitryVinnik dvinnik.com
Atomic Operations
Compound
Operations
↑ Speed
Compare
& Swap
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
Thread Safe Collections
@DmitryVinnik dvinnik.com
ConcurrentHashMap
Thread Safe Collections
Compound
Operations
↑ Speed
Configurable
Concurrency
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
Where do we start?
@DmitryVinnik dvinnik.com
Promises in
JavaScript
Future/
Callable
Executor
Framework
Completable
Future
Workflows
Promises in
JavaScript
Future/
Callable
Executor
Framework
Completable
Future
@DmitryVinnik dvinnik.com
Callback Hell
in JavaScript
@DmitryVinnik dvinnik.com
Callback Hell in JavaScript
Verbose
Intuitive
@DmitryVinnik dvinnik.com
How do we fix this?
@DmitryVinnik dvinnik.com
Promises in JavaScript
@DmitryVinnik dvinnik.com
Promises in JavaScript
Before After
@DmitryVinnik dvinnik.com
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
Runnable -> Thread
@DmitryVinnik dvinnik.com
Callable -> Future
@DmitryVinnik dvinnik.com
Callable
@DmitryVinnik dvinnik.com
No Input
Callable
Has Output
Has Exception
Future
@DmitryVinnik dvinnik.com
Completed in
the Future
Future
Executor
Framework
@DmitryVinnik dvinnik.com
Future sounds great!
@DmitryVinnik dvinnik.com
But how do we use it?
@DmitryVinnik dvinnik.com
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
@DmitryVinnik dvinnik.com
Executor Framework
Thread
Management
Declarative
Model
@DmitryVinnik dvinnik.com
Thread Pool
@DmitryVinnik dvinnik.com
Thread Pool
Thread
Management
Thread
Configuration
@DmitryVinnik dvinnik.com
Too many arguments...
@DmitryVinnik dvinnik.com
Factories to the rescue!
@DmitryVinnik dvinnik.com
Executor Factories
@DmitryVinnik dvinnik.com
Executor Factories
Single
Thread Pool
Cached
Thread Pool
Fixed
Thread Pool
Scheduled
Thread Pool
Work Stealing
Pool@DmitryVinnik dvinnik.com
Executor + Thread Pools
@DmitryVinnik dvinnik.com
ExecutorService
@DmitryVinnik dvinnik.com
ExecutorService
Async
Tasks
Thread
Pools
@DmitryVinnik dvinnik.com
Are we done?
@DmitryVinnik dvinnik.com
Future is not perfect!
@DmitryVinnik dvinnik.com
Not really...
@DmitryVinnik dvinnik.com
Future Pitfalls
Blocking
Operations
No Result
Chaining
Future
Combination
Exception
Handling
@DmitryVinnik dvinnik.com
Blocking Result Retrieval
@DmitryVinnik dvinnik.com
Blocking Result Retrieval
Blocking Get
Use Timeout
@DmitryVinnik dvinnik.com
No Futures Chaining
@DmitryVinnik dvinnik.com
Futures Chaining
No Workflows
Callback Hell
@DmitryVinnik dvinnik.com
Futures Combination
@DmitryVinnik dvinnik.com
Futures Combination
Blocking
InvokeAny
Blocking
InvokeAll()
@DmitryVinnik dvinnik.com
Exception Handling
@DmitryVinnik dvinnik.com
Exception Handling
Multiple
Exceptions
On Most
Operations
@DmitryVinnik dvinnik.com
So many issues...
@DmitryVinnik dvinnik.com
No worries!
@DmitryVinnik dvinnik.com
CompletableFuture
is here to help
@DmitryVinnik dvinnik.com
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
CompletableFuture
@DmitryVinnik dvinnik.com
CompletableFuture
Transformation
Composition
Chaining
Combination
Future Pitfalls
Blocking
Operations
No Result
Chaining
Future
Combination
Exception
Handling
@DmitryVinnik dvinnik.com
Let’s handle them with
CompletableFuture!
@DmitryVinnik dvinnik.com
Transformation/Chaining
@DmitryVinnik dvinnik.com
Transformation/Chainin
g
Workflows
ForkJoin
Pool
@DmitryVinnik dvinnik.com
Tasks Composition
@DmitryVinnik dvinnik.com
Tasks Composition
Workflows
Flat Map
@DmitryVinnik dvinnik.com
Controllable Futures
@DmitryVinnik dvinnik.com
Controllable Futures
Completable
Timeout/
Default Value
@DmitryVinnik dvinnik.com
Multiple Futures Control
@DmitryVinnik dvinnik.com
Multiple Futures Control
AllOf/AnyOf
Results Not
Formatted
@DmitryVinnik dvinnik.com
Tasks Combination
@DmitryVinnik dvinnik.com
Tasks Combination
Collect
Results
Sync/Async
@DmitryVinnik dvinnik.com
Exception Handling
@DmitryVinnik dvinnik.com
Exception Handling
@DmitryVinnik dvinnik.com
Call For Action
Embrace
Concurrency
Review Your
Application
Continue
Learning
@DmitryVinnik dvinnik.com
Q/A
@DmitryVinnik dvinnik.com
About Speaker
Twitter: @DmitryVinnik
Blog: dvinnik.com
LinkedIn: in/dmitry-vinnik/
Email: dmitry@dvinnik.com

Contenu connexe

Similaire à Back to the CompletableFuture: Concurrency in Action

Hands-on React Native: From Zero to Hero
Hands-on React Native: From Zero to HeroHands-on React Native: From Zero to Hero
Hands-on React Native: From Zero to HeroAll Things Open
 
Lessons Learned from 2000 Event Driven Microservices - Reversim
Lessons Learned from 2000 Event Driven Microservices - ReversimLessons Learned from 2000 Event Driven Microservices - Reversim
Lessons Learned from 2000 Event Driven Microservices - ReversimNatan Silnitsky
 
From Robotium to Appium: Choose your Journey
From Robotium to Appium: Choose your Journey From Robotium to Appium: Choose your Journey
From Robotium to Appium: Choose your Journey Dmitry Vinnik
 
BuildStuff - Lessons Learned from 2000 Event Driven Microservices
BuildStuff - Lessons Learned from 2000 Event Driven MicroservicesBuildStuff - Lessons Learned from 2000 Event Driven Microservices
BuildStuff - Lessons Learned from 2000 Event Driven MicroservicesNatan Silnitsky
 
Kentico Cloud - Our First Impressions
Kentico Cloud - Our First Impressions Kentico Cloud - Our First Impressions
Kentico Cloud - Our First Impressions Brian McKeiver
 
Serverless a superpower for frontend developers
Serverless a superpower for frontend developersServerless a superpower for frontend developers
Serverless a superpower for frontend developersYan Cui
 
Beware the potholes
Beware the potholesBeware the potholes
Beware the potholesYan Cui
 
DevSum - Lessons Learned from 2000 microservices
DevSum - Lessons Learned from 2000 microservicesDevSum - Lessons Learned from 2000 microservices
DevSum - Lessons Learned from 2000 microservicesNatan Silnitsky
 
[Webinar] Announcing the Camunda Cloud Public Beta - February 2020
[Webinar] Announcing the Camunda Cloud Public Beta - February 2020[Webinar] Announcing the Camunda Cloud Public Beta - February 2020
[Webinar] Announcing the Camunda Cloud Public Beta - February 2020camunda services GmbH
 
Empowering businesses with serverless
Empowering businesses with serverlessEmpowering businesses with serverless
Empowering businesses with serverlessYan Cui
 
Architecture in real
Architecture in realArchitecture in real
Architecture in realMichael Chen
 
Webinar #5: Mobile indsigter og trends ft. Google
Webinar #5: Mobile indsigter og trends ft. Google Webinar #5: Mobile indsigter og trends ft. Google
Webinar #5: Mobile indsigter og trends ft. Google Become A/S
 
Micro Frontends Architecture - Jitendra kumawat (Guavus)
Micro Frontends Architecture - Jitendra kumawat (Guavus)Micro Frontends Architecture - Jitendra kumawat (Guavus)
Micro Frontends Architecture - Jitendra kumawat (Guavus)Tech Triveni
 
JCon Live 2023 - Lice coding some integration problems
JCon Live 2023 - Lice coding some integration problemsJCon Live 2023 - Lice coding some integration problems
JCon Live 2023 - Lice coding some integration problemsBernd Ruecker
 
Satisfying Business and Engineering Requirements: Client-server JavaScript, S...
Satisfying Business and Engineering Requirements: Client-server JavaScript, S...Satisfying Business and Engineering Requirements: Client-server JavaScript, S...
Satisfying Business and Engineering Requirements: Client-server JavaScript, S...Jason Strimpel
 
Wix+Confluent Meetup - Lessons Learned from 2000 Event Driven Microservices
Wix+Confluent Meetup - Lessons Learned from 2000 Event Driven MicroservicesWix+Confluent Meetup - Lessons Learned from 2000 Event Driven Microservices
Wix+Confluent Meetup - Lessons Learned from 2000 Event Driven MicroservicesNatan Silnitsky
 
GeeCon - Lessons Learned from 2000 microservices
GeeCon - Lessons Learned from 2000 microservicesGeeCon - Lessons Learned from 2000 microservices
GeeCon - Lessons Learned from 2000 microservicesNatan Silnitsky
 
How to build a social network on serverless
How to build a social network on serverlessHow to build a social network on serverless
How to build a social network on serverlessYan Cui
 
Dynamically Testing Individual Microservice Releases In Production
  Dynamically Testing Individual Microservice Releases In Production  Dynamically Testing Individual Microservice Releases In Production
Dynamically Testing Individual Microservice Releases In ProductionMatt Turner
 

Similaire à Back to the CompletableFuture: Concurrency in Action (20)

Hands-on React Native: From Zero to Hero
Hands-on React Native: From Zero to HeroHands-on React Native: From Zero to Hero
Hands-on React Native: From Zero to Hero
 
Lessons Learned from 2000 Event Driven Microservices - Reversim
Lessons Learned from 2000 Event Driven Microservices - ReversimLessons Learned from 2000 Event Driven Microservices - Reversim
Lessons Learned from 2000 Event Driven Microservices - Reversim
 
From Robotium to Appium: Choose your Journey
From Robotium to Appium: Choose your Journey From Robotium to Appium: Choose your Journey
From Robotium to Appium: Choose your Journey
 
BuildStuff - Lessons Learned from 2000 Event Driven Microservices
BuildStuff - Lessons Learned from 2000 Event Driven MicroservicesBuildStuff - Lessons Learned from 2000 Event Driven Microservices
BuildStuff - Lessons Learned from 2000 Event Driven Microservices
 
Kentico Cloud - Our First Impressions
Kentico Cloud - Our First Impressions Kentico Cloud - Our First Impressions
Kentico Cloud - Our First Impressions
 
Serverless a superpower for frontend developers
Serverless a superpower for frontend developersServerless a superpower for frontend developers
Serverless a superpower for frontend developers
 
Beware the potholes
Beware the potholesBeware the potholes
Beware the potholes
 
DevSum - Lessons Learned from 2000 microservices
DevSum - Lessons Learned from 2000 microservicesDevSum - Lessons Learned from 2000 microservices
DevSum - Lessons Learned from 2000 microservices
 
[Webinar] Announcing the Camunda Cloud Public Beta - February 2020
[Webinar] Announcing the Camunda Cloud Public Beta - February 2020[Webinar] Announcing the Camunda Cloud Public Beta - February 2020
[Webinar] Announcing the Camunda Cloud Public Beta - February 2020
 
Empowering businesses with serverless
Empowering businesses with serverlessEmpowering businesses with serverless
Empowering businesses with serverless
 
Architecture in real
Architecture in realArchitecture in real
Architecture in real
 
Webinar #5: Mobile indsigter og trends ft. Google
Webinar #5: Mobile indsigter og trends ft. Google Webinar #5: Mobile indsigter og trends ft. Google
Webinar #5: Mobile indsigter og trends ft. Google
 
Micro Frontends Architecture - Jitendra kumawat (Guavus)
Micro Frontends Architecture - Jitendra kumawat (Guavus)Micro Frontends Architecture - Jitendra kumawat (Guavus)
Micro Frontends Architecture - Jitendra kumawat (Guavus)
 
JCon Live 2023 - Lice coding some integration problems
JCon Live 2023 - Lice coding some integration problemsJCon Live 2023 - Lice coding some integration problems
JCon Live 2023 - Lice coding some integration problems
 
Satisfying Business and Engineering Requirements: Client-server JavaScript, S...
Satisfying Business and Engineering Requirements: Client-server JavaScript, S...Satisfying Business and Engineering Requirements: Client-server JavaScript, S...
Satisfying Business and Engineering Requirements: Client-server JavaScript, S...
 
Wix+Confluent Meetup - Lessons Learned from 2000 Event Driven Microservices
Wix+Confluent Meetup - Lessons Learned from 2000 Event Driven MicroservicesWix+Confluent Meetup - Lessons Learned from 2000 Event Driven Microservices
Wix+Confluent Meetup - Lessons Learned from 2000 Event Driven Microservices
 
GeeCon - Lessons Learned from 2000 microservices
GeeCon - Lessons Learned from 2000 microservicesGeeCon - Lessons Learned from 2000 microservices
GeeCon - Lessons Learned from 2000 microservices
 
How to build a social network on serverless
How to build a social network on serverlessHow to build a social network on serverless
How to build a social network on serverless
 
Cloud Native & Docker
Cloud Native & DockerCloud Native & Docker
Cloud Native & Docker
 
Dynamically Testing Individual Microservice Releases In Production
  Dynamically Testing Individual Microservice Releases In Production  Dynamically Testing Individual Microservice Releases In Production
Dynamically Testing Individual Microservice Releases In Production
 

Plus de Dmitry Vinnik

Leadership in Open Source and Why Companies Care
Leadership in Open Source and Why Companies CareLeadership in Open Source and Why Companies Care
Leadership in Open Source and Why Companies CareDmitry Vinnik
 
Maximizing React Speed: Hands-On Guide to Debugging and Optimizing React Appl...
Maximizing React Speed: Hands-On Guide to Debugging and Optimizing React Appl...Maximizing React Speed: Hands-On Guide to Debugging and Optimizing React Appl...
Maximizing React Speed: Hands-On Guide to Debugging and Optimizing React Appl...Dmitry Vinnik
 
Testing React with Jest: Validate Your Components Quickly!
Testing React with Jest: Validate Your Components Quickly!Testing React with Jest: Validate Your Components Quickly!
Testing React with Jest: Validate Your Components Quickly!Dmitry Vinnik
 
Cross-Platform CSS (Yes, it's Possible!) with Yoga
Cross-Platform CSS (Yes, it's Possible!) with YogaCross-Platform CSS (Yes, it's Possible!) with Yoga
Cross-Platform CSS (Yes, it's Possible!) with YogaDmitry Vinnik
 
Documentation Made Easy with Docusaurus
Documentation Made Easy with DocusaurusDocumentation Made Easy with Docusaurus
Documentation Made Easy with DocusaurusDmitry Vinnik
 
Fixing Broken Windows: Dealing with Legacy Systems, Poor Quality and Gaps
Fixing Broken Windows: Dealing with Legacy Systems, Poor Quality and GapsFixing Broken Windows: Dealing with Legacy Systems, Poor Quality and Gaps
Fixing Broken Windows: Dealing with Legacy Systems, Poor Quality and GapsDmitry Vinnik
 
Ent: Making Data Easy in Go
Ent: Making Data Easy in GoEnt: Making Data Easy in Go
Ent: Making Data Easy in GoDmitry Vinnik
 
The 10,000 Steps of Open Source Project Health
The 10,000 Steps of Open Source Project HealthThe 10,000 Steps of Open Source Project Health
The 10,000 Steps of Open Source Project HealthDmitry Vinnik
 
Better Start: Enforcing Best Engineering Practices with Kotlin
Better Start: Enforcing Best Engineering Practices with KotlinBetter Start: Enforcing Best Engineering Practices with Kotlin
Better Start: Enforcing Best Engineering Practices with KotlinDmitry Vinnik
 
Testing Svelte with Jest: Validate Your Components Quickly!
Testing Svelte with Jest: Validate Your Components Quickly!Testing Svelte with Jest: Validate Your Components Quickly!
Testing Svelte with Jest: Validate Your Components Quickly!Dmitry Vinnik
 
Developing Lightning Components for Communities.pptx
Developing Lightning Components for Communities.pptxDeveloping Lightning Components for Communities.pptx
Developing Lightning Components for Communities.pptxDmitry Vinnik
 
Remote Work: Gateway to Freedom
Remote Work: Gateway to FreedomRemote Work: Gateway to Freedom
Remote Work: Gateway to FreedomDmitry Vinnik
 
Kindness Engineering: Focusing on What Matters
Kindness Engineering: Focusing on What MattersKindness Engineering: Focusing on What Matters
Kindness Engineering: Focusing on What MattersDmitry Vinnik
 
Gauge + Taiko, BDD for Web Revived
Gauge + Taiko, BDD for Web RevivedGauge + Taiko, BDD for Web Revived
Gauge + Taiko, BDD for Web RevivedDmitry Vinnik
 
Stress Driven Development, and How to Avoid It
Stress Driven Development, and How to Avoid ItStress Driven Development, and How to Avoid It
Stress Driven Development, and How to Avoid ItDmitry Vinnik
 
Domain Driven Testing: Know What You’re Doing
Domain Driven Testing: Know What You’re DoingDomain Driven Testing: Know What You’re Doing
Domain Driven Testing: Know What You’re DoingDmitry Vinnik
 
Build Tests to Build Websites
Build Tests to Build WebsitesBuild Tests to Build Websites
Build Tests to Build WebsitesDmitry Vinnik
 

Plus de Dmitry Vinnik (17)

Leadership in Open Source and Why Companies Care
Leadership in Open Source and Why Companies CareLeadership in Open Source and Why Companies Care
Leadership in Open Source and Why Companies Care
 
Maximizing React Speed: Hands-On Guide to Debugging and Optimizing React Appl...
Maximizing React Speed: Hands-On Guide to Debugging and Optimizing React Appl...Maximizing React Speed: Hands-On Guide to Debugging and Optimizing React Appl...
Maximizing React Speed: Hands-On Guide to Debugging and Optimizing React Appl...
 
Testing React with Jest: Validate Your Components Quickly!
Testing React with Jest: Validate Your Components Quickly!Testing React with Jest: Validate Your Components Quickly!
Testing React with Jest: Validate Your Components Quickly!
 
Cross-Platform CSS (Yes, it's Possible!) with Yoga
Cross-Platform CSS (Yes, it's Possible!) with YogaCross-Platform CSS (Yes, it's Possible!) with Yoga
Cross-Platform CSS (Yes, it's Possible!) with Yoga
 
Documentation Made Easy with Docusaurus
Documentation Made Easy with DocusaurusDocumentation Made Easy with Docusaurus
Documentation Made Easy with Docusaurus
 
Fixing Broken Windows: Dealing with Legacy Systems, Poor Quality and Gaps
Fixing Broken Windows: Dealing with Legacy Systems, Poor Quality and GapsFixing Broken Windows: Dealing with Legacy Systems, Poor Quality and Gaps
Fixing Broken Windows: Dealing with Legacy Systems, Poor Quality and Gaps
 
Ent: Making Data Easy in Go
Ent: Making Data Easy in GoEnt: Making Data Easy in Go
Ent: Making Data Easy in Go
 
The 10,000 Steps of Open Source Project Health
The 10,000 Steps of Open Source Project HealthThe 10,000 Steps of Open Source Project Health
The 10,000 Steps of Open Source Project Health
 
Better Start: Enforcing Best Engineering Practices with Kotlin
Better Start: Enforcing Best Engineering Practices with KotlinBetter Start: Enforcing Best Engineering Practices with Kotlin
Better Start: Enforcing Best Engineering Practices with Kotlin
 
Testing Svelte with Jest: Validate Your Components Quickly!
Testing Svelte with Jest: Validate Your Components Quickly!Testing Svelte with Jest: Validate Your Components Quickly!
Testing Svelte with Jest: Validate Your Components Quickly!
 
Developing Lightning Components for Communities.pptx
Developing Lightning Components for Communities.pptxDeveloping Lightning Components for Communities.pptx
Developing Lightning Components for Communities.pptx
 
Remote Work: Gateway to Freedom
Remote Work: Gateway to FreedomRemote Work: Gateway to Freedom
Remote Work: Gateway to Freedom
 
Kindness Engineering: Focusing on What Matters
Kindness Engineering: Focusing on What MattersKindness Engineering: Focusing on What Matters
Kindness Engineering: Focusing on What Matters
 
Gauge + Taiko, BDD for Web Revived
Gauge + Taiko, BDD for Web RevivedGauge + Taiko, BDD for Web Revived
Gauge + Taiko, BDD for Web Revived
 
Stress Driven Development, and How to Avoid It
Stress Driven Development, and How to Avoid ItStress Driven Development, and How to Avoid It
Stress Driven Development, and How to Avoid It
 
Domain Driven Testing: Know What You’re Doing
Domain Driven Testing: Know What You’re DoingDomain Driven Testing: Know What You’re Doing
Domain Driven Testing: Know What You’re Doing
 
Build Tests to Build Websites
Build Tests to Build WebsitesBuild Tests to Build Websites
Build Tests to Build Websites
 

Dernier

%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Hararemasabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...masabamasaba
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 

Dernier (20)

%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 

Back to the CompletableFuture: Concurrency in Action

Notes de l'éditeur

  1. How many of you have Macbook Pro? How many of you used AWS/Azure? Have you heard about Microservices
  2. How many of you have Macbook Pro? How many of you used AWS/Azure? Have you heard about Microservices Source: The Next Platform
  3. Change or die situation at this point World perspective
  4. Change or die situation at this point World perspective
  5. Change or die situation at this point World perspective
  6. Source: Pixabay
  7. Source: Pixabay
  8. Source: Pixabay
  9. Source: Pixabay
  10. This is our path for the rest of today This arrow is our talk
  11. This is our path for the rest of today This arrow is our talk
  12. This is our path for the rest of today This arrow is our talk
  13. This is our path for the rest of today This arrow is our talk
  14. Excuses to Avoid Concurrency: “My app is single threaded” “Concurrency is too complicated” “It works most of the time” “If it is not broken, don't touch it”
  15. Excuses to Avoid Concurrency: “My app is single threaded” “Concurrency is too complicated” “It works most of the time” “If it is not broken, don't touch it”
  16. Excuses to Avoid Concurrency: “My app is single threaded” “Concurrency is too complicated” “It works most of the time” “If it is not broken, don't touch it”
  17. Excuses to Avoid Concurrency: “My app is single threaded” “Concurrency is too complicated” “It works most of the time” “If it is not broken, don't touch it”
  18. “Always Design for Concurrency” - Pragmatic Programmer
  19. Good example is http clienta
  20. Good example is http clienta
  21. Good example is http clienta
  22. This is our path for the rest of today This arrow is our talk
  23. https://platformio.org/platformio-ide
  24. https://platformio.org/platformio-ide
  25. https://platformio.org/platformio-ide
  26. https://platformio.org/platformio-ide
  27. https://platformio.org/platformio-ide
  28. https://platformio.org/platformio-ide
  29. https://platformio.org/platformio-ide
  30. https://platformio.org/platformio-ide
  31. https://platformio.org/platformio-ide
  32. This is our path for the rest of today This arrow is our talk
  33. This is our path for the rest of today This arrow is our talk
  34. Will be sharing slides, github and useful links