[Logo]
Forums Register Login
synchronization and exception
From what i understand about synchronization,the following 2 ways of synchronizing an instance variable are equivalent:

Route 1:

void reverseOrder() {
synchronized (this) {
int halfWay = intArray.length / 2;
for (int i = 0; i < halfWay; ++i) {
.......
......
}
}
}

Route 2:

synchronized void reverseOrder() {

int halfWay = intArray.length / 2;
for (int i = 0; i < halfWay; ++i) {
i....
.......
}
}
}

If so,we can use these 2 techniques inter-changeably to protect the instance variable 'intArray'
Does anyone differ on this?

Now in either of these techniques,if we throw an exception mid-way,does the lock get released automatically?
Please, use code tags.

Yes, marking the method as synchronized and synchronizing the whole method body on this object has exactly the same result. And always when you return from a synchronized method or a synchronized block, the lock is released, no matter if it's a normal return or an exception.
Wink, wink, nudge, nudge, say no more ... https://richsoil.com/cards



All times above are in ranch (not your local) time.
The current ranch time is
Nov 21, 2017 10:41:41.