Here is a Java Program to Applying MultiThreading using Synchronization.
Output of Above Java Program
[Hello]
[Synchronized]
[World]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | class Callme { void call(String msg) { System.out.print( "[" + msg); try { Thread.sleep( 1000 ); } catch (InterruptedException e) { System.out.println( "Interrupted" ); } System.out.println( "]" ); } } class Caller implements Runnable { String msg; Callme target; Thread t; public Caller(Callme targ, String s) { target = targ; msg = s; t = new Thread( this ); t.start(); } // synchronize calls to call() public void run() { synchronized (target) { // synchronized block target.call(msg); } } } class Synch1 { public static void main(String args[]) { Callme target = new Callme(); Caller ob1 = new Caller(target, "Hello" ); Caller ob2 = new Caller(target, "Synchronized" ); Caller ob3 = new Caller(target, "World" ); // wait for threads to end try { ob1.t.join(); ob2.t.join(); ob3.t.join(); } catch (InterruptedException e) { System.out.println( "Interrupted" ); } } } |
Output of Above Java Program
[Hello]
[Synchronized]
[World]