On Thu, Jun 23, 2016 at 4:58 PM, Gary Gregory <[email protected]> wrote:
> On Thu, Jun 23, 2016 at 4:56 PM, Gary Gregory <[email protected]> > wrote: > >> Like this: >> >> public static boolean hasManager(final String name) { >> try (Object o = AutoCloseableLock.lock(LOCK)) { >> return MAP.containsKey(name); >> } >> } >> >> With a new class: >> >> public class AutoCloseableLock implements AutoCloseable { >> >> public static AutoCloseableLock lock(final Lock lock) { >> Objects.requireNonNull(lock, "lock"); >> lock.lock(); >> return new AutoCloseableLock(lock); >> } >> >> private final Lock lock; >> >> public AutoCloseableLock(final Lock lock) { >> this.lock = lock; >> } >> >> @Override >> public void close() { >> this.lock.unlock(); >> } >> >> public void lock() { >> this.lock.lock(); >> } >> > > You do not even need a lock() method. > But let's say you do for GC-free reasons: public AutoCloseableLock lock() { this.lock.lock(); return this; } to do: private AutoCloseableLock autoCloseableLock = new AutoCloseableLock(new ReentrantLock()); public static boolean hasManager(final String name) { try (Object o = autoCloseableLock.lock()) { return MAP.containsKey(name); } } Gary Gary > >> } >> >> The pro is less code and less chance for errors, the con is that you >> create a new AutoCloseableLock for lock/unlock sites. >> >> Gary >> >> On Thu, Jun 23, 2016 at 4:54 PM, Matt Sicker <[email protected]> wrote: >> >>> Sounds like an opportunity for a small Commons or independent project. >>> CloseableLock! >>> >>> On 23 June 2016 at 18:51, Greg Thomas <[email protected]> wrote: >>> >>>> I''m sure I read somewhere that it was a deliberate choice not to make >>>> it, to stop people using the very common pattern of creating the object in >>>> the try() - which isn't much use for a lock. >>>> >>>> Greg >>>> -- >>>> Sent from my iPhone >>>> >>>> On 24 Jun 2016, at 00:45, Remko Popma <[email protected]> wrote: >>>> >>>> Good idea! >>>> Maybe propose this for Java 9? >>>> Looks very reasonable to me. >>>> >>>> Sent from my iPhone >>>> >>>> On 2016/06/24, at 8:32, Gary Gregory <[email protected]> wrote: >>>> >>>> I wonder if anyone knows why Lock is not AutoCloseable. >>>> >>>> This: >>>> >>>> public static boolean hasManager(final String name) { >>>> LOCK.lock(); >>>> try { >>>> return MAP.containsKey(name); >>>> } finally { >>>> LOCK.unlock(); >>>> } >>>> } >>>> >>>> >>>> Seems lame in comparison to: >>>> >>>> public static boolean hasManager(final String name) { >>>> try (LOCK.lock()) { >>>> return MAP.containsKey(name); >>>> } >>>> } >>>> >>>> Which, due to syntax really would be: >>>> >>>> public static boolean hasManager(final String name) { >>>> try (Object o = LOCK.lock()) { >>>> return MAP.containsKey(name); >>>> } >>>> } >>>> >>>> Just wonderin'... >>>> >>>> Gary >>>> >>>> -- >>>> E-Mail: [email protected] | [email protected] >>>> Java Persistence with Hibernate, Second Edition >>>> <http://www.manning.com/bauer3/> >>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >>>> Spring Batch in Action <http://www.manning.com/templier/> >>>> Blog: http://garygregory.wordpress.com >>>> Home: http://garygregory.com/ >>>> Tweet! http://twitter.com/GaryGregory >>>> >>>> >>> >>> >>> -- >>> Matt Sicker <[email protected]> >>> >> >> >> >> -- >> E-Mail: [email protected] | [email protected] >> Java Persistence with Hibernate, Second Edition >> <http://www.manning.com/bauer3/> >> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >> Spring Batch in Action <http://www.manning.com/templier/> >> Blog: http://garygregory.wordpress.com >> Home: http://garygregory.com/ >> Tweet! http://twitter.com/GaryGregory >> > > > > -- > E-Mail: [email protected] | [email protected] > Java Persistence with Hibernate, Second Edition > <http://www.manning.com/bauer3/> > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> > Spring Batch in Action <http://www.manning.com/templier/> > Blog: http://garygregory.wordpress.com > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory > -- E-Mail: [email protected] | [email protected] Java Persistence with Hibernate, Second Edition <http://www.manning.com/bauer3/> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> Spring Batch in Action <http://www.manning.com/templier/> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory
