SlideShare a Scribd company logo
1 of 31
Jitendra Chittoda, Member Development Department @ ION Trading India
Pvt. Ltd.
Co-leader Delhi and NCR Java User Group (DaNJUG)
Email: jitendra@chittoda.com
Twitter: @JChittoda
Blog: http://chittoda.com
Sequential Concurrency…. WHAT
???
08 May 20131
JavaOne India 2013 : COM1240
Delhi & NCR JUG (DaNJUG)
08 May 20132
 30+ Members
 Looking for more active members
 Meetup.com, Groups
 If your friends are in Delhi NCR, please spread
the word
Agenda
 What is ThreadPool
 Benefits of using ThreadPool
 What we can’t achieve with ThreadPool
 Why & Where ?
 Sequential Concurrency Fundamentals
 SerialExecutor
 StripedExecutorService Design
 Features
 Current State
08 May 20133
ThreadPool
08 May 20134
Benefits of ThreadPool
08 May 20135
 Pre-initialized pool of threads
 Reusable threads
 Configurable
What we can’t achieve with
ThreadPool
08 May 20136
 As per the business requirement, sometimes you
may want to process Tasks in specific order.
 Tasks execution order is not maintained by the
normal ThreadPools
 Processing Not Ordered
 Processing of a Task is not ordered, you can say its
uncertain.
08 May 20137
Why? Industry Examples
08 May 20138
 Exchange trading
 Processing of trades on an instrument.
 Train Reservations
 Ticket booking requests for a train must be
processed in FIFO order.
 Multi Tenancy
 Each tenant want some specific execution to be
ordered
Where ?
08 May 20139
 First saw in 2007 then in 2010 and in 2011
 November 2011: Started writing my own
implementation, published a blog on
http://chittoda.com
 November 2012:
 http://www.javaspecialists.eu/archive/Issue206.html
 Heinz got 5 different implementations after this
issue.
Sequential Concurrency
Fundamentals
08 May 201310
•Identification
•Maintaining Order
•Sequential Processing
•No Dependency
Sequential Concurrency
Fundamentals
08 May 201311
 Identification
• Maintain the sequence based on some Stripe or
Key
• Stripe: An object which is common among the
Tasks those needs to be processed in sequence.
Sequential Concurrency
Fundamentals
08 May 201312
 Maintaining Order
• Maintain the sequential ordering tasks
• FIFO Order
Sequential Concurrency
Fundamentals
08 May 201313
 Sequential Processing
 Process tasks of a Stripe in sequence
 To maintain this we assign one and only one Thread to a
Queue.
Sequential Concurrency
Fundamentals
08 May 201314
 No Dependency
 Tasks of one Stripe-X should not be dependent on Tasks of
another Stripe-Y
Sequential Concurrency
08 May 201315
12 132
Pool of
Threads
Queue of
Stripe
StripedExecutorServic
e
T-
1
T-
2
T-
3
Executor JavaDoc
08 May 201316
• Many Executor implementations impose some sort of
limitation on how and when tasks are scheduled. The
executor below serializes the submission of tasks to a
second executor, illustrating a composite executor.
class SerialExecutor implements Executor {
Queue<Runnable> tasks = new ArrayDeque<>();
Executor executor;
Runnable active;
SerialExecutor(Executor executor) {
this.executor = executor;
}
SerialExecutor
08 May 201317
public void execute(final Runnable r) {
tasks.offer(new Runnable() {
public void run() {
try {
r.run();
} finally {
scheduleNext();
}
}
});
if (active == null) {
scheduleNext();
}
}
SerialExecutor
08 May 201318
protected void scheduleNext() {
if ((active = tasks.poll()) != null) {
executor.execute(active);
}
}
Pool of SerialExecutor
08 May 201319
 SerialExecutor maintain the sequence of the
tasks assigned to it and process them in
sequence. Using single queue.
 BUT we need pool of SerialExecutor, so that we
can concurrently execute tasks of two or more
Striped Queues
Implementation Details
08 May 201320
1) Identification
• Stripe: We are using Object as Stripe, you can
define your own.
2) Maintain Order
• With separate Queue based on Stripe.
• SerialExecutor is maintaining a Queue
3) Sequential Processing
• Handled by SerialExecutor
4) No Dependency
• Handled by SerialExecutor
Design
08 May 201321
08 May 201322
08 May 201323
Inside StripedExecutorService
08 May 201324
class SerialExecutor implements Executor {
private BlockingQueue<Runnable> tasks =
new LinkedBlockingQueue<>();
private Runnable active;
private final Object stripe;
private SerialExecutor(Object stripe) {
this.stripe = stripe;
}
08 May 201325
public void execute(final Runnable r) {
lock.lock();
try {
tasks.add(new Runnable() {
public void run() {
try {
r.run();
} finally { scheduleNext(); }
}
});
if (active == null){ scheduleNext(); }
} finally {
lock.unlock();
}
}
Inside StripedExecutorService
08 May 201326
private void scheduleNext() {
lock.lock();
try {
if ((active = tasks.poll()) != null) {
executor.execute(active);
terminating.signalAll();
} else {
removeEmptySerialExecutor(stripe, this);
}
} finally {
lock.unlock();
}
}
08 May 201327
private final ExecutorService executor;
private final Map<Object, SerialExecutor> executors =
new IdentityHashMap<>();
public void execute(Runnable command) {
lock.lock();
try {
Object stripe = getStripe(command);
if (stripe != null) {
SerialExecutor ser_exec=
executors.get(stripe);
if (ser_exec == null) {
executors.put(stripe, ser_exec=
new SerialExecutor(stripe));
}
ser_exec.execute(command);
} else { executor.execute(command); }
} finally { lock.unlock(); }
}
Features
08 May 201328
 Non striped tasks can also be handled with SES
 Queues gets created when required
 No memory leaks in terms of the Queues. Queues
gets removed once all tasks are finished.
Current State
08 May 201329
 Work In Progress
 Several other implementations available, but no
one passes the tests written for
StripedExecutorService
 Performance
References
08 May 201330
 Delhi & NCR JUG
 https://groups.google.com/d/forum/dncrjug
 GitHub :
 https://github.com/kabutz/striped-executor-service
 Dr. Heinz Kabutz Newsletter
 http://www.javaspecialists.eu/archive/Issue206.html
 http://www.javaspecialists.eu/
 Blog
 http://chittoda.com
08 May 201331

More Related Content

Similar to Jitendra Chittoda discusses sequential concurrency and StripedExecutorService design

Similar to Jitendra Chittoda discusses sequential concurrency and StripedExecutorService design (20)

Microservices and modularity with java
Microservices and modularity with javaMicroservices and modularity with java
Microservices and modularity with java
 
important struts interview questions
important struts interview questionsimportant struts interview questions
important struts interview questions
 
MySQL Fabric: Easy Management of MySQL Servers
MySQL Fabric: Easy Management of MySQL ServersMySQL Fabric: Easy Management of MySQL Servers
MySQL Fabric: Easy Management of MySQL Servers
 
Struts 2-overview2
Struts 2-overview2Struts 2-overview2
Struts 2-overview2
 
Struts2-Spring=Hibernate
Struts2-Spring=HibernateStruts2-Spring=Hibernate
Struts2-Spring=Hibernate
 
Scalamen and OT
Scalamen and OTScalamen and OT
Scalamen and OT
 
Unit-Testing Your Legacy JavaScript
Unit-Testing Your Legacy JavaScriptUnit-Testing Your Legacy JavaScript
Unit-Testing Your Legacy JavaScript
 
Struts framework
Struts frameworkStruts framework
Struts framework
 
72185-26528-StrutsMVC
72185-26528-StrutsMVC72185-26528-StrutsMVC
72185-26528-StrutsMVC
 
Struts framework
Struts frameworkStruts framework
Struts framework
 
Extending the Mule Runtime - Building a Circuit Breaker Component.pptx
Extending the Mule Runtime - Building a Circuit Breaker Component.pptxExtending the Mule Runtime - Building a Circuit Breaker Component.pptx
Extending the Mule Runtime - Building a Circuit Breaker Component.pptx
 
Distributed tracing 101
Distributed tracing 101Distributed tracing 101
Distributed tracing 101
 
Distributed Tracing
Distributed TracingDistributed Tracing
Distributed Tracing
 
Java concurrency
Java concurrencyJava concurrency
Java concurrency
 
Jakarta Concurrency: Present and Future
Jakarta Concurrency: Present and FutureJakarta Concurrency: Present and Future
Jakarta Concurrency: Present and Future
 
Session 41 - Struts 2 Introduction
Session 41 - Struts 2 IntroductionSession 41 - Struts 2 Introduction
Session 41 - Struts 2 Introduction
 
Struts2
Struts2Struts2
Struts2
 
Struts 2-overview2
Struts 2-overview2Struts 2-overview2
Struts 2-overview2
 
ow.ppt
ow.pptow.ppt
ow.ppt
 
ow.ppt
ow.pptow.ppt
ow.ppt
 

Recently uploaded

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 

Recently uploaded (20)

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

Jitendra Chittoda discusses sequential concurrency and StripedExecutorService design

  • 1. Jitendra Chittoda, Member Development Department @ ION Trading India Pvt. Ltd. Co-leader Delhi and NCR Java User Group (DaNJUG) Email: jitendra@chittoda.com Twitter: @JChittoda Blog: http://chittoda.com Sequential Concurrency…. WHAT ??? 08 May 20131 JavaOne India 2013 : COM1240
  • 2. Delhi & NCR JUG (DaNJUG) 08 May 20132  30+ Members  Looking for more active members  Meetup.com, Groups  If your friends are in Delhi NCR, please spread the word
  • 3. Agenda  What is ThreadPool  Benefits of using ThreadPool  What we can’t achieve with ThreadPool  Why & Where ?  Sequential Concurrency Fundamentals  SerialExecutor  StripedExecutorService Design  Features  Current State 08 May 20133
  • 5. Benefits of ThreadPool 08 May 20135  Pre-initialized pool of threads  Reusable threads  Configurable
  • 6. What we can’t achieve with ThreadPool 08 May 20136  As per the business requirement, sometimes you may want to process Tasks in specific order.  Tasks execution order is not maintained by the normal ThreadPools  Processing Not Ordered  Processing of a Task is not ordered, you can say its uncertain.
  • 8. Why? Industry Examples 08 May 20138  Exchange trading  Processing of trades on an instrument.  Train Reservations  Ticket booking requests for a train must be processed in FIFO order.  Multi Tenancy  Each tenant want some specific execution to be ordered
  • 9. Where ? 08 May 20139  First saw in 2007 then in 2010 and in 2011  November 2011: Started writing my own implementation, published a blog on http://chittoda.com  November 2012:  http://www.javaspecialists.eu/archive/Issue206.html  Heinz got 5 different implementations after this issue.
  • 10. Sequential Concurrency Fundamentals 08 May 201310 •Identification •Maintaining Order •Sequential Processing •No Dependency
  • 11. Sequential Concurrency Fundamentals 08 May 201311  Identification • Maintain the sequence based on some Stripe or Key • Stripe: An object which is common among the Tasks those needs to be processed in sequence.
  • 12. Sequential Concurrency Fundamentals 08 May 201312  Maintaining Order • Maintain the sequential ordering tasks • FIFO Order
  • 13. Sequential Concurrency Fundamentals 08 May 201313  Sequential Processing  Process tasks of a Stripe in sequence  To maintain this we assign one and only one Thread to a Queue.
  • 14. Sequential Concurrency Fundamentals 08 May 201314  No Dependency  Tasks of one Stripe-X should not be dependent on Tasks of another Stripe-Y
  • 15. Sequential Concurrency 08 May 201315 12 132 Pool of Threads Queue of Stripe StripedExecutorServic e T- 1 T- 2 T- 3
  • 16. Executor JavaDoc 08 May 201316 • Many Executor implementations impose some sort of limitation on how and when tasks are scheduled. The executor below serializes the submission of tasks to a second executor, illustrating a composite executor. class SerialExecutor implements Executor { Queue<Runnable> tasks = new ArrayDeque<>(); Executor executor; Runnable active; SerialExecutor(Executor executor) { this.executor = executor; }
  • 17. SerialExecutor 08 May 201317 public void execute(final Runnable r) { tasks.offer(new Runnable() { public void run() { try { r.run(); } finally { scheduleNext(); } } }); if (active == null) { scheduleNext(); } }
  • 18. SerialExecutor 08 May 201318 protected void scheduleNext() { if ((active = tasks.poll()) != null) { executor.execute(active); } }
  • 19. Pool of SerialExecutor 08 May 201319  SerialExecutor maintain the sequence of the tasks assigned to it and process them in sequence. Using single queue.  BUT we need pool of SerialExecutor, so that we can concurrently execute tasks of two or more Striped Queues
  • 20. Implementation Details 08 May 201320 1) Identification • Stripe: We are using Object as Stripe, you can define your own. 2) Maintain Order • With separate Queue based on Stripe. • SerialExecutor is maintaining a Queue 3) Sequential Processing • Handled by SerialExecutor 4) No Dependency • Handled by SerialExecutor
  • 24. Inside StripedExecutorService 08 May 201324 class SerialExecutor implements Executor { private BlockingQueue<Runnable> tasks = new LinkedBlockingQueue<>(); private Runnable active; private final Object stripe; private SerialExecutor(Object stripe) { this.stripe = stripe; }
  • 25. 08 May 201325 public void execute(final Runnable r) { lock.lock(); try { tasks.add(new Runnable() { public void run() { try { r.run(); } finally { scheduleNext(); } } }); if (active == null){ scheduleNext(); } } finally { lock.unlock(); } }
  • 26. Inside StripedExecutorService 08 May 201326 private void scheduleNext() { lock.lock(); try { if ((active = tasks.poll()) != null) { executor.execute(active); terminating.signalAll(); } else { removeEmptySerialExecutor(stripe, this); } } finally { lock.unlock(); } }
  • 27. 08 May 201327 private final ExecutorService executor; private final Map<Object, SerialExecutor> executors = new IdentityHashMap<>(); public void execute(Runnable command) { lock.lock(); try { Object stripe = getStripe(command); if (stripe != null) { SerialExecutor ser_exec= executors.get(stripe); if (ser_exec == null) { executors.put(stripe, ser_exec= new SerialExecutor(stripe)); } ser_exec.execute(command); } else { executor.execute(command); } } finally { lock.unlock(); } }
  • 28. Features 08 May 201328  Non striped tasks can also be handled with SES  Queues gets created when required  No memory leaks in terms of the Queues. Queues gets removed once all tasks are finished.
  • 29. Current State 08 May 201329  Work In Progress  Several other implementations available, but no one passes the tests written for StripedExecutorService  Performance
  • 30. References 08 May 201330  Delhi & NCR JUG  https://groups.google.com/d/forum/dncrjug  GitHub :  https://github.com/kabutz/striped-executor-service  Dr. Heinz Kabutz Newsletter  http://www.javaspecialists.eu/archive/Issue206.html  http://www.javaspecialists.eu/  Blog  http://chittoda.com