changeset 1:761beb884f91

dead lock example
author one
date Tue, 16 Dec 2008 14:24:33 +0900
parents bd5c06be77bf
children 03fa40193abe 1b818f8e63ac
files .settings/org.eclipse.jdt.core.prefs src/deadLockTest/Client.java src/deadLockTest/Server.java src/deadLockTest/TestDeadLock.java
diffstat 4 files changed, 77 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/.settings/org.eclipse.jdt.core.prefs	Tue Dec 09 18:12:03 2008 +0900
+++ b/.settings/org.eclipse.jdt.core.prefs	Tue Dec 16 14:24:33 2008 +0900
@@ -1,12 +1,12 @@
-#Tue Dec 09 17:26:38 JST 2008
+#Tue Dec 16 14:10:00 JST 2008
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.compliance=1.5
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.source=1.5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/deadLockTest/Client.java	Tue Dec 16 14:24:33 2008 +0900
@@ -0,0 +1,25 @@
+package deadLockTest;
+
+public class Client extends Thread {
+	Server server1;
+	Server server2;
+	
+	Client(Server hotel, Server plane) {
+		this.server1 = hotel;
+		this.server2 = plane;
+	}
+	
+	public void run() {
+		try {
+			server1.lock();
+			server2.lock();
+			server1.reserve();
+			server2.reserve();
+			server1.release();
+			server2.release();
+		} catch (InterruptedException e) {
+			System.out.println("Error occured.");
+		}
+		System.out.println("Reserve conmpleted.");
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/deadLockTest/Server.java	Tue Dec 16 14:24:33 2008 +0900
@@ -0,0 +1,23 @@
+package deadLockTest;
+
+public class Server {
+	int count = 0;
+	private boolean lock;
+	
+	synchronized void reserve() {
+		System.err.println("server-enter: count="+count);
+		count++;
+		System.err.println("server-leave: count="+count);
+	}
+
+	public synchronized void lock() throws InterruptedException {
+		while (lock) {
+			wait();
+		}
+		lock = true;
+	}
+
+	public synchronized void release() {
+		lock = false;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/deadLockTest/TestDeadLock.java	Tue Dec 16 14:24:33 2008 +0900
@@ -0,0 +1,25 @@
+package deadLockTest;
+
+public class TestDeadLock {
+	Server hotel = new Server();
+	Server plane = new Server();
+	Client t2 = new Client(plane,hotel);
+	Client t3 = new Client(plane,hotel);
+	
+	public static void main(String arg[]) throws InterruptedException  {
+		TestDeadLock test = new TestDeadLock();
+		test.test();
+	}
+	
+	public void test() throws InterruptedException {
+		t2.start();
+		t3.start();
+		t2.join();
+		t3.join();
+
+		System.err.println(
+				"Plane = "+plane.count+
+				" Hotel = "+hotel.count);
+	}
+
+}