From 6fa36ec3d3410c00bea747e801baea8bd93257e6 Mon Sep 17 00:00:00 2001 From: ArunRaja Date: Sun, 1 Jul 2012 21:49:17 +0530 Subject: [PATCH] Thread sync example and concurrent modification exception added --- src/ThreadTest/ThreadCreator.java | 25 ++++++++++++ src/ThreadTest/syncmain.java | 22 +++++++++++ src/ThreadTest/syncobj.java | 65 +++++++++++++++++++++++++++++++ 3 files changed, 112 insertions(+) create mode 100644 src/ThreadTest/ThreadCreator.java create mode 100644 src/ThreadTest/syncmain.java create mode 100644 src/ThreadTest/syncobj.java diff --git a/src/ThreadTest/ThreadCreator.java b/src/ThreadTest/ThreadCreator.java new file mode 100644 index 0000000..6077378 --- /dev/null +++ b/src/ThreadTest/ThreadCreator.java @@ -0,0 +1,25 @@ +package ThreadTest; + +public class ThreadCreator extends Thread +{ + syncobj a; + int ThrdCnt=0; + public ThreadCreator(syncobj a,int ThrdCnt) + { + this.a = a; + this.ThrdCnt = ThrdCnt; + this.start(); + } + + public void run() + { + if(ThrdCnt==1||ThrdCnt==2) + { + a.delayAndPrint(ThrdCnt); + a.delayAndPrint2(ThrdCnt); + } + + if(ThrdCnt==3) + a.iterateArrayList(); + } +} diff --git a/src/ThreadTest/syncmain.java b/src/ThreadTest/syncmain.java new file mode 100644 index 0000000..ec47909 --- /dev/null +++ b/src/ThreadTest/syncmain.java @@ -0,0 +1,22 @@ +package ThreadTest; + +public class syncmain { + + /* Synchronsed method example */ + + public static void main(String s[]) throws InterruptedException + { + syncobj obj = new syncobj(); + + // Synchronised method example + new ThreadCreator(obj,1).join(); + new ThreadCreator(obj,2).join(); + + // ConcrrentModificationException creator + new ThreadCreator(obj,3); + Thread.sleep(2000); // wait till the object is started to iterate + System.out.println("adding to arraylist"); + obj.al.add(3); + } + +} diff --git a/src/ThreadTest/syncobj.java b/src/ThreadTest/syncobj.java new file mode 100644 index 0000000..d8d5972 --- /dev/null +++ b/src/ThreadTest/syncobj.java @@ -0,0 +1,65 @@ +package ThreadTest; + +import java.util.ArrayList; +import java.util.Iterator; + +public class syncobj { + + ArrayList al = new ArrayList(); + + syncobj() + { + al.add(1); + } + + synchronized void delayAndPrint(int cnt) + { + try{ + System.out.print("Thread:"+cnt+",Mehod:1-Am in"); + Thread.sleep(2000); + System.out.println(", After 2 min out"); + } + catch(Exception e) + { + System.out.println("Error-"+e); + } + } + + synchronized void delayAndPrint2(int cnt) + { + try{ + System.out.print("Thread:"+cnt+",Mehod:2-Am in"); + Thread.sleep(2000); + System.out.println(", After 2 min out"); + } + catch(Exception e) + { + System.out.println("Error-"+e); + } + } + + void iterateArrayList() + { + try + { + System.out.println("starting iterate"); + Iterator b= al.iterator(); + while(b.hasNext()) + { + try + { + Thread.sleep(5000); + b.next(); + } catch (InterruptedException e) + { + System.out.println(e); + } + } + System.out.println("ending iterate"); + } + catch(Exception e) + { + System.out.println(e); + } + } +}