Skip to main content

Concurrency in Java – Series

Concurrency and parallelism features in Java are as old as Java itself. The original creators and specification authors rightly presumed that programmers and future state software designs would need high concurrency capabilities to scale their apps. The Java Memory Model and the JVMs are designed from the ground up to support concurrent programming, with basic concurrency support built in the Java programming language and the Java class libraries. Since version 5.0, the Java platform has also included high-level concurrency APIs to ease the complex semantics of working with and understanding Threading behaviors.

This series outlines the core concepts of concurrency in Java and provides a balanced view from the JVM memory model specifications as well as from the programmer's perspective. The series discusses important principles and provides guidance about designing concurrent applications in Java.

The series is divided into following easy to follow posts: 

Hope you enjoy the series. Happy Coding!! 👍

Comments

Popular posts from this blog

Are we DevOps, or SRE?

SRE Vs. DevOps has been a ranging battle for quite sometime now. Ask any operations or infra team in today's bubbling tech shops and, they will tell you, without a flutter, that they are SRE. Scratch them a bit more and, they will tell you how they follow the SRE principles with stories from their daily grind and link them to Google's SRE handbooks. Then drop the big question, "But isn't the same thing DevOps too?" and see them getting confused and incoherent a bit. Now, if you ask, "Or maybe, yours is more of a hybrid model than pure DevOps/SRE?". Now, you might have turned a few heads and even made some ponder further away. Managing "Operations" as a disciplined practice has always been an arduous task. Many companies today have dedicated operations departments engaged in planning and executions, but more often than not, they fail badly. The tech operations landscape is no different. There are always, generally unsolved questions about how t...

Concurrency in Java – Part 1, The Stepping Stones

What are Threads? Conceptually, a thread is a distinct flow of control within a program. A thread is similar to the more familiar notion of a process, except that multiple threads within the same application share much of the same state, in particular, they run in the same address space or memory space. Sharing the address space between threads has a big advantage as it allows the reuse of the same data space between threads. If we had a separate small data stack, local to each thread, then data sharing and data synchronization can become a big problem in programs. This is essentially the same situation that we encounter related to Session state sharing across JVM clusters in production clustered environments. Distinct address spaces would require a complex mechanism to share the mutable state across thread spaces as soon as the thread mutates its local address space. In essence, it would require address space synchronization mechani...