You are viewing content from a past/completed QCon -

Presentation: From Concurrent to Parallel

Track: Java - Performance, Patterns and Predictions

Location: Churchill, G flr.

Day of week:

Slides: Download Slides

Level: Intermediate

Persona: Developer, JVM

What You’ll Learn

  • Understand the factors contributing to exploitable parrellelism
  • Learn how to analyze expected parallel behavior of Java stream pipelines
  • Resist the temptation to optimize prematurely


As core counts continue to increase, how we exploit hardware parallelism in practice shifts from concurrency — using more cores to handle more user requests — to parallelism — using more cores to solve data-intensive problems faster. This talk will explore the different goals, tools, and techniques involved between these various approaches, and how to analyze a computation for potential parallelism, with specific attention to the parallel stream library in Java.


Can you elaborate on your key takeaways?


"Most optimization is radically premature." Too many developers get obsessed with micro-performance details before they've even determined if their approach solves the business problem in front of them. We should first apply 100% of our brainpower to writing clear, correct, maintainable code that solves the business problem; only then should we ask whether we need to improve its performance -- and if so, by how much -- before attempting to optimize. Very often, clear, well-written code is already fast enough. "There's no such thing as magic performance dust." Parallelism is a useful tool for extracting performance when applied correctly, but it is still on us to understand the problem, cost model, and tradeoffs. "Just because you can, doesn't mean you should." The Java Streams API makes it easy to turn a computation parallel, but that doesn't mean parallelism is the right tool for all -- or even most -- problems. You still have to do the work to determine whether parallelism is going to get you a speedup. (If you even need a speedup.)


What are your focused in your work/research today?


As Architect for the Java Language at Oracle, my role is to chart the future of the Java programming model. Languages need to continually evolve to meet ever-higher developer expectations, and runtimes need to continually evolve to adapt to ever-changing hardware. I'm currently working on a number of projects, both shorter- and longer-term, including: value types, pattern matching, better interaction between Java and native code/data, and improving serialization.


What is goal for your talk?


The audience should come away with a better understanding of what parallelism will, and won't offer them. This talk focuses on analysis, rather than measurement; it should be practical to analyze whether a problem (and the implementation of a solution) admits exploitable parallelism, and to identify the many possible sources through which impediments to parallel execution can sneak into our solution.


What is the level an target persona for your talk?


Both intermediate and advanced developers will benefit from this talk.

Speaker: Brian Goetz

Java Language Architect @Oracle

Brian Goetz is the Java Language Architect at Oracle, and was the specification lead for JSR-335 (Lambda Expressions for the Java Programming Language.) He is the author of the best-selling Java Concurrency in Practice, as well as over 75 articles on Java development, and has been fascinated by programming since Jimmy Carter was President.

Find Brian Goetz at

Preliminary tracks

Discover some of the topics you will see at QCon London. *The schedule is subject to change

Event-Based Architectures: The Hard Parts

Scaling Security, from Device to Cloud

From Remote to Hybrid Teams: Return to Office?

Architectures You've Always Wondered About

Building High Performing Teams

Performance/Mechanical Sympathy

Next Generation Microservices: Building Distributed Systems the Right Way

Modern Data Pipelines & Streams

The Cloud Operating Model

Chaos and Resilience: Architecting for Success

Scaling Frontend

Modern JVM Innovations

MLOps: Implementing ML Across the Enterprise

Architecting a Modern Financial Institution

Crafting the Developer Experience