Distinguish Between Synchronized Statics & Synchronized Instance Methods

Distinguish Between Synchronized Statics & Synchronized Instance Methods

When you invoke a synchronized static method, you obtain the lock associated with the Class object in whose class the method is defined.

When you apply synchronized to instance methods and object references, you obtain the lock for the object on which the method was invoked.

The following code is not thread safe:

 Class Foo implements Runnable{   public void printX()   {	while(true)        {	    System.out.println(“X”);        }   }   public static void printY()   {	while(true)        {	    System.out.println(“Y”);        }   }   public void run()   {      printX();   }}Class Test{   public static void main(String args[])   {	Foo f = new Foo();	Thread t = new Thread(f);	t.start();	f.printY();   }}

The methods ‘printX()’ & ‘printY()’ attempt to execute concurrently, because they are invoked on separate threads.Because they obtain two different locks, execution interleaves between them.

When both methods share a common resource, you need to protect it to avoid a conflict. The first way is simply to synchronize on the common resource.A second way is to synchronize on a special instance variable; i.e. declaring a local instance for the sole purpose of synchronizing on it. Here’s an example:

 Class One implements Runnable{   private byte[] lock = new byte[0];   public void printX()   {	synchronized(lock)        {	    // The code to protect.        }   }   public static void printY()   {	synchronized(lock)        {	    // The code to protect.        }   }}

A zero element array is used because such an array is cheaper to create than any other object. Why? Because it doesn’t require a constructor call like the creation of Object does. Thus, it executes faster.

Share the Post:
Heading photo, Metadata.

What is Metadata?

What is metadata? Well, It’s an odd concept to wrap your head around. Metadata is essentially the secondary layer of data that tracks details about the “regular” data. The regular

XDR solutions

The Benefits of Using XDR Solutions

Cybercriminals constantly adapt their strategies, developing newer, more powerful, and intelligent ways to attack your network. Since security professionals must innovate as well, more conventional endpoint detection solutions have evolved

AI is revolutionizing fraud detection

How AI is Revolutionizing Fraud Detection

Artificial intelligence – commonly known as AI – means a form of technology with multiple uses. As a result, it has become extremely valuable to a number of businesses across

AI innovation

Companies Leading AI Innovation in 2023

Artificial intelligence (AI) has been transforming industries and revolutionizing business operations. AI’s potential to enhance efficiency and productivity has become crucial to many businesses. As we move into 2023, several

data fivetran pricing

Fivetran Pricing Explained

One of the biggest trends of the 21st century is the massive surge in analytics. Analytics is the process of utilizing data to drive future decision-making. With so much of

kubernetes logging

Kubernetes Logging: What You Need to Know

Kubernetes from Google is one of the most popular open-source and free container management solutions made to make managing and deploying applications easier. It has a solid architecture that makes

ransomware cyber attack

Why Is Ransomware Such a Major Threat?

One of the most significant cyber threats faced by modern organizations is a ransomware attack. Ransomware attacks have grown in both sophistication and frequency over the past few years, forcing