Posts

Showing posts from July, 2024

Concurrency and parallelism in Java

 Concurrency and parallelism are two concepts in programming that deal with executing multiple tasks, but they differ in their approaches and purposes. Here’s a breakdown of each: Concurrency Concurrency is about dealing with multiple tasks at once but not necessarily executing them simultaneously. It allows a system to manage multiple tasks by interleaving their execution, giving the illusion that they are running in parallel. Key Characteristics: Task Interleaving: Multiple tasks make progress by being interleaved. Context Switching: The system switches between tasks frequently. Non-deterministic: The order of execution can vary. Resource Sharing: Tasks share resources like CPU, memory, etc.      In this example, thread1 and thread2 run concurrently, and the output will interleave the print statements from both threads. public class ConcurrencyExample {     public static void main(String[] args) {         Thread thread1 = new Thread(() -> {             for (int i = 0;