Mercurial > hg > y16 > e165725 > os > ex5.2
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); + } + +}