Proposal: Automatic Resource Management
Xavi Miró
xmirog at gmail.com
Sat Mar 7 02:20:53 PST 2009
There is an error in my code:
this part is incorrect, the Lock object to unlock is this.lock:
public void close throws Exception {
lock.unlock();
}
...so:
public void close throws Exception {
this.lock.unlock();
}
Sorry!
Xavi
Xavi Miró escribió:
> Neal,
>
> this proposal tries to achieve big benefits with small changes. In
> my opinion, Streams, Readers, Writers, Formatters, Channels, Sockets,
> Connections, Statements, ResultSets, or java.awt.Graphics are much
> more used than Locks. This does not mean that Locks are not important.
> If the proposal can be applied to the formers it will be a huge
> benefit, although Locks can't be used directly with it.
>
> I agree with Bob, adapters can be used for many use cases where
> "close" methods are incompatible with the Disposable or Resource
> interface. And although the proposal is not designed to manage Locks,
> perhaps a kind of "safe unlocker" can be easily made, so this original
> code:
>
> myLock.lock();
> try {
> // access the resource protected by myLock
> } finally {
> myLock.unlock();
> }
>
> could be written this way:
>
> try (SafeUnlocker = new SafeUnlocker(myLock)) {
> // access the resource protected by myLock
> }
>
> where SafeUnlocker would be more or less like this:
>
> public class SafeUnlocker implements Disposable {
>
> private final Lock lock;
>
> public SafeUnlocker(Lock lock){
> this.lock = lock;
> lock.lock();
> }
>
> public void close throws Exception {
> lock.unlock();
> }
> }
>
> The name SafeUnlocker maybe it's not appropriate, but I haven't found
> a better one. There can be problems in this source code that I haven't
> seen...this is only an idea.
>
> Regards,
>
> Xavi
>
> Neal Gafter escribió:
>> On Fri, Mar 6, 2009 at 4:02 PM, Bob Lee <crazybob at crazybob.org> wrote:
>>
>>> On Fri, Mar 6, 2009 at 3:19 PM, Neal Gafter <neal at gafter.com> wrote:
>>>
>>>> If you've already decided which resource-like APIs "count", then you
>>>> don't need to ask us.
>>>>
>>> Did I unfairly discount some APIs? If so, please speak up.
>>>
>>
>> I did, and you quoted me just after asking the question (see below,
>> for example). Apparently, because some other use cases are more
>> problematic, you feel that the ones I brought up are unimportant.
>> I've certainly run into situations where automatic pairing of resource
>> acquisition and release for java.util.concurrent locks would have
>> avoided errors. I know that supporting resource acquisition and
>> release for all the different resource APIs that exist (or will exist)
>> in Java is difficult to do apriori in a language change (which is why
>> I prefer an API-based solution), but pretending the use cases don't
>> exist seems dishonest.
>>
>>
>>>> Personally, I'd like java.util.locks.Lock to be
>>>> easier to use, though I understand this proposal doesn't solve that
>
More information about the coin-dev
mailing list