On 5/10/2012 7:56 PM, Alan Bateman wrote:
Forwarding Kasper's mail to the right list. From: Kasper Nielsen <kaspe...@gmail.com> To: nio-disc...@openjdk.java.net I have a question about the AutoCloseable interface. Since I cannot find any mention about how asynchronously closeable resources should be handled. Say I wanted juc.ThreadPoolExecutorService to implement AutoCloseable. When close() returned should the executor be in the shutdown phase or in the terminated phase? In other words should I implement close() like this (which I believe) public void close() { executor.shutdown(); executor.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS); //ignore any interrupted exceptions } or like this public void close() { executor.shutdown(); }
That's really an arbitrary choice. What semantics do you want the close() to have?
Personally I don't think AutoCloseable is a good fit for an executor service as the lifetime of an autocloseable is tied to a block of code and that would be a rare usage for an executor service.
David Holmes
- Kasper