Mega Code Archive

 
Categories / Java / Threads
 

Thread synchronization

public class TwoObjects extends Object {   private String objID;   public TwoObjects(String objID) {     this.objID = objID;   }   public synchronized void synchronizedMethod(int val) {     print("entering synchronized method()");     int num = val * 2 + objID.length();     print("in doStuff() - local variable num=" + num);     try {       Thread.sleep(2000);     } catch (InterruptedException x) {     }     print("leaving synchronized method");   }   public void print(String msg) {     threadPrint("objID=" + objID + " - " + msg);   }   public static void threadPrint(String msg) {     String threadName = Thread.currentThread().getName();     System.out.println(threadName + ": " + msg);   }   public static void main(String[] args) {     final TwoObjects obj1 = new TwoObjects("obj1");     final TwoObjects obj2 = new TwoObjects("obj2");     Runnable runA = new Runnable() {       public void run() {         obj1.synchronizedMethod(3);       }     };     Thread threadA = new Thread(runA, "threadA");     threadA.start();     try {       Thread.sleep(200);     } catch (InterruptedException x) {     }     Runnable runB = new Runnable() {       public void run() {         obj2.synchronizedMethod(7);       }     };     Thread threadB = new Thread(runB, "threadB");     threadB.start();   } }