Code sample two threads updating
In the next 15 min you learn how to synchronize access to mutable shared variables via the synchronized keyword, locks and semaphores.
The majority of concepts shown in this article also work in older versions of Java.
For simplicity the code samples of this tutorial make use of the two helper methods as defined here.
In the previous tutorial we've learned how to execute code in parallel via executor services.
For processes, the illusion is produced by interrupting the processor's work on one process after a very short time. In order to switch between processes, the current program counter is saved and the next processor's program counter is loaded.
This is not sufficient because the same needs to be done with registers and certain architecture and OS specific data.
Synchronization is the tool using which we can achieve thread safety, JVM guarantees that synchronized code will be executed by only one thread at a time.
Let's just say we want to increment an integer which is accessible simultaneously from multiple threads.Notice that hacker's code is trying to lock the my Object instance and once it gets the lock, it's never releasing it causing do Something() method to block on waiting for the lock, this will cause system to go on deadlock and cause Denial of Service (Do S).Notice that lock Object is public and by changing it's reference, we can execute synchronized block parallel in multiple threads.is incremented by 1 four times and since we have two threads, it's value should be 8 after both the threads finished executing.But when you will run above program multiple times, you will notice that count value is varying between 6,7,8.