0% found this document useful (0 votes)
8 views4 pages

Thread Synchronization in Java

Java provides a mechanism for thread synchronization using synchronized blocks to manage access to shared resources. This prevents concurrency issues when multiple threads attempt to access the same resource, ensuring that only one thread can access it at a time through the use of monitors. Examples illustrate the difference in output when threads are synchronized versus when they are not, highlighting the importance of synchronization in multithreading.

Uploaded by

riturajsingh6090
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views4 pages

Thread Synchronization in Java

Java provides a mechanism for thread synchronization using synchronized blocks to manage access to shared resources. This prevents concurrency issues when multiple threads attempt to access the same resource, ensuring that only one thread can access it at a time through the use of monitors. Examples illustrate the difference in output when threads are synchronized versus when they are not, highlighting the importance of synchronization in multithreading.

Uploaded by

riturajsingh6090
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Thread Synchronization in Java

Java programming language provides a very handy way of creating threads and
synchronizing their task by using synchronized blocks. You keep shared resources within
this block. Following is the general form of the synchronized statement −
Syntax
synchronized(object identifier)
{
// Access shared variables and other shared resources
}
Here, the object identifier is a reference to an object whose lock associates with the monitor
that the synchronized statement represents. Now we are going to see two examples, where
we will print a counter using two different threads. When threads are not synchronized, they
print counter value which is not in sequence, but when we print counter by putting inside
synchronized() block, then it prints counter very much in sequence for both the threads.

Need of Thread Synchronization?


When we start two or more threads within a program, there may be a situation when multiple threads try
to access the same resource and finally they can produce unforeseen result due to concurrency issues.
For example, if multiple threads try to write within a same file then they may corrupt the data because
one of the threads can override data or while one thread is opening the same file at the same time another
thread might be closing the same file.
So there is a need to synchronize the action of multiple threads and make sure that only one thread can
access the resource at a given point in time. This is implemented using a concept called monitors. Each
object in Java is associated with a monitor, which a thread can lock or unlock. Only one thread at a time
may hold a lock on a monitor.

Multithreading Example without Thread Synchronization


Here is a simple example which may or may not print counter value in sequence and every time we run
it, it produces a different result based on CPU availability to a thread.
Example OUTPUT:

This produces a different result every time you run this program −
Multithreading Example with Thread Synchronization
OUTPUT:

You might also like