Synchronized block:
Synchronized block is used to synchronize a critical block of code instead of whole method.
Note: Synchronized block is preferred over synchronized method because in case synchronized block only critical block of code is locked not whole method, hence performance will be better in this case.
Throw NullPointerException if object passed in synchronized block is null.
Example:
MultiThreadExample.java
/** * This program is used to show the multithreading * example with synchronization using synchronized block. * @author w3schools */ class PrintTable{ public void printTable(int n){ synchronized(this){ System.out.println("Table of " + n); for(int i=1;i<=10;i++){ System.out.println(n*i); try{ Thread.sleep(500); }catch(Exception e){ System.out.println(e); } } } } } class MyThread1 extends Thread{ PrintTable pt; MyThread1(PrintTable pt){ this.pt=pt; } public void run(){ pt.printTable(2); } } class MyThread2 extends Thread{ PrintTable pt; MyThread2(PrintTable pt){ this.pt=pt; } public void run(){ pt.printTable(5); } } public class MultiThreadExample{ public static void main(String args[]){ //creating PrintTable object. PrintTable obj = new PrintTable(); //creating threads. MyThread1 t1=new MyThread1(obj); MyThread2 t2=new MyThread2(obj); //start threads. t1.start(); t2.start(); } } |
Output:
Table of 2 2 4 6 8 10 12 14 16 18 20 Table of 5 5 10 15 20 25 30 35 40 45 50 |
Difference between synchronized method and synchronized block.
Synchronized method | Synchronized block |
|
|
Next Topic: Input output (I/O) in java.
Previous Topic: Static synchronization in java with example.