Mercurial > hg > y16 > e165725 > os > ex5.2
changeset 4:9b3876d1a253
check
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 09 Jul 2011 11:40:48 +0900 |
parents | 1b818f8e63ac |
children | 5498b5524aa7 |
files | src/deadLockTest/Client.java src/deadLockTest/Server.java src/deadLockTest/TestDeadLock.java src/threadTest/TestThread.java |
diffstat | 4 files changed, 30 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/src/deadLockTest/Client.java Tue Dec 16 15:58:46 2008 +0900 +++ b/src/deadLockTest/Client.java Sat Jul 09 11:40:48 2011 +0900 @@ -3,23 +3,25 @@ public class Client extends Thread { Server server1; Server server2; + String name; - Client(Server hotel, Server plane) { + Client(String name, Server hotel, Server plane) { this.server1 = hotel; this.server2 = plane; + this.name = name; } public void run() { try { - server1.lock(); - server2.lock(); - server1.reserve(); - server2.reserve(); - server1.release(); - server2.release(); + server1.lock(name); + server2.lock(name); + server1.reserve(name); + server2.reserve(name); + server1.release(name); + server2.release(name); } catch (InterruptedException e) { - System.out.println("Error occured."); + System.out.println(name + " Error occured."); } - System.out.println("Reserve conmpleted."); + System.out.println(name + "Reserve conmpleted."); } }
--- a/src/deadLockTest/Server.java Tue Dec 16 15:58:46 2008 +0900 +++ b/src/deadLockTest/Server.java Sat Jul 09 11:40:48 2011 +0900 @@ -3,21 +3,29 @@ public class Server { int count = 0; private boolean lock; + private String sname; - synchronized void reserve() { - System.err.println("server-enter: count="+count); - count++; - System.err.println("server-leave: count="+count); + public Server(String name) { + this.sname = name; } - public synchronized void lock() throws InterruptedException { + synchronized void reserve(String name) { + System.err.println(name + " server-enter "+sname+" : count="+count); + count++; + System.err.println(name + " server-leave "+sname+" : count="+count); + } + + public synchronized void lock(String name) throws InterruptedException { while (lock) { + System.err.println(name + " is wating "+sname); wait(); } lock = true; + System.err.println(name + " gets lock "+ sname); } - public synchronized void release() { + public synchronized void release(String name) { + System.err.println(name + " releases lock "+sname); lock = false; notify(); }
--- a/src/deadLockTest/TestDeadLock.java Tue Dec 16 15:58:46 2008 +0900 +++ b/src/deadLockTest/TestDeadLock.java Sat Jul 09 11:40:48 2011 +0900 @@ -1,10 +1,10 @@ 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); + Server hotel = new Server("Hilton"); + Server plane = new Server("JAL"); + Client t2 = new Client("Steve", plane,hotel); + Client t3 = new Client("Tedd", hotel,plane); public static void main(String arg[]) throws InterruptedException { TestDeadLock test = new TestDeadLock();