Input
Output
public class StaticSynchronization{ public static void main(String args[]) { Calculate ca = new Calculate(); Data d1= new Data(ca, 10); Data d2= new Data(ca, 100); try { d1.t.join(); d2.t.join(); } catch(InterruptedException e) { System.out.println("Interrupted"); } } } class Calculate { synchronized static void show(int n) { try { for(int i=1;i<=3;i++){ System.out.println(n*i); Thread.sleep(500); } } catch(InterruptedException e) { System.out.println("Interrupted"); } } } class Data implements Runnable { int n; Calculate ca; Thread t; public Data(Calculate c, int num) { ca = c; n = num; t = new Thread(this); t.start(); } public void run() { ca.show(n); } }