Java – Synchronization Method | Code Factory


Index Page : Link

Donate : Link

Medium Link : Link

Applications : Link

package com.example.thread;

/**
 * @author code.factory
 *
 */
public class SynchronizedTest {
	public static void main(String... args) {
		Display d = new Display();
		MyThread t1 = new MyThread(d, "Code");
		MyThread t2 = new MyThread(d, "Factory");
		t1.start();
		t2.start();
	}
}

class Display {
	public synchronized void wish(String name) {
		for(int i=0; i<5; i++) {
			System.out.print("Display ");
			try {
				Thread.sleep(1000);
			} catch(Exception e) {
				e.printStackTrace();
			}
			System.out.println(name);
		}
	}
}

class MyThread extends Thread {
	Display d;
	String name;
	public MyThread(Display d, String name) {
		this.d = d;
		this.name = name;
	}
	public void run() {
		d.wish(name);
	}
}

Output :

Display Code
Display Code
Display Code
Display Code
Display Code
Display Factory
Display Factory
Display Factory
Display Factory
Display Factory
  • If we are not declaring wish() method as Synchronized then both threads will be executed simultaneously and hence we will get irregular output.
  • If we declare wish() method as synchronized then at a time only 1 thread is allow to execute wish() method on the given display object. Hence we will get regular output.

. . . . .

Case Study :

package com.example.thread;

/**
 * @author code.factory
 *
 */
public class SynchronizedTest {
	public static void main(String... args) {
		Display d1 = new Display();
		Display d2 = new Display();
		MyThread t1 = new MyThread(d1, "Code");
		MyThread t2 = new MyThread(d2, "Factory");
		t1.start();
		t2.start();
	}
}

class Display {
	public synchronized void wish(String name) {
		for(int i=0; i<5; i++) {
			try {
				Thread.sleep(1000);
			} catch(Exception e) {
				e.printStackTrace();
			}
			System.out.println(name);
		}
	}
}

class MyThread extends Thread {
	Display d;
	String name;
	public MyThread(Display d, String name) {
		this.d = d;
		this.name = name;
	}
	public void run() {
		d.wish(name);
	}
}

Output :

Code
Factory
Code
Factory
Factory
Code
Code
Factory
Code
Factory
  • Even though wish() method is Synchronized we will get irregular output because threads are operating on different Java objects.
  • Conclusion : If multiple threads are operating on same Java object then Synchronization is required. If multiple threads are operating on mutiple Java objects Synchronization is not required.

2 thoughts on “Java – Synchronization Method | Code Factory”

Leave a comment