-
April 18th, 2011, 05:48 PM
#1
java synchronisation
Hi,
I am bit stuck here, I have to have edit this code so that a train must wait in front of the tunnel lock for a train to come in the opposite direction to exit before it can enter the tunnel, i have to use java built in synchronisation condition. Before the try statement I have tried looking at while statements, if statements and still cant get it to give me the following output:
Train 1 arrives
Train 1 ascends
Train 1 Exits Tunnel
Train 2 Arrives
train 2 descends
train 2 exits tunnel
train 3 and so on
Any help would be greatful
public synchronized void useTunnelLock(Train train)
{
System.out.println(train + " " + train.getDirection());
System.out.println(train + " exiting Tunnel");
while(train.getDirection() == ASCENDING())
{
this.wait();
}
notifyAll();
try
{
// occupy tunnel lock for 5s
Thread.sleep(5000);
}
catch (InterruptedException ex)
{
ex.printStackTrace();
}
// swap direction of tunnel lock
direction = (direction == ASCENDING)? DESCENDING : ASCENDING;
}
-
April 18th, 2011, 05:52 PM
#2
Re: java synchronisation
Sorry i just realised i havent formatted the code correctly
-
April 19th, 2011, 05:01 AM
#3
Re: java synchronisation
Sorry i just realised i havent formatted the code correctly
You need to use code tags, see my signature at the bottom of this post.
I don't understand the logic of your code, surely you should only wake up the waiting threads once a train has exited the tunnel and not before it enters the tunnel. Your code has no logic to handle direction equaling DESCENDING, so what happens in this case. Another thing is what happens if more than one train is waiting to enter the tunnel?
BTW why do you have a method called ASCENDING() or was this supposed to be just ASCENDING in which case how does this code even compile.
Before you do any more coding clearly write down the sequence of steps you need to follow to get several trains through the tunnel and use this as the template for your code.
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|