Synchronized method:
A method declared with synchronized keyword is known as synchronized method. A synchronized method can be static or non-static.
Example: multithreading example without synchronization.
MultiThreadExample.java
/** * This program is used to show the multithreading * example without synchronization. * @author w3schools */ class PrintTable{ //not-synchronized method. public void printTable(int n){ 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 5 Table of 2 2 5 4 10 6 15 8 20 10 25 12 30 14 35 16 40 18 45 50 20 |
Example: Non-static synchronized method.
MultiThreadExample.java
/** * This program is used to show the multithreading * example with synchronization. * @author w3schools */ class PrintTable{ //synchronized method. public synchronized void printTable(int n){ 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 |
Download this example.
Next Topic: Static synchronization in java with example.
Previous Topic: Synchronization in java with example.