Package org.neo4j.graphdb
Interface ResourceIterable<T>
- Type Parameters:
T
- the type of values returned through the iterators
- All Superinterfaces:
AutoCloseable
,Iterable<T>
,Resource
Iterable
whose iterators
have associated resources
that need to be released.
ResourceIterators
are always automatically released when their owning
transaction is committed or rolled back.
Inside a long running transaction, it is possible to release associated resources early. To do so
you must ensure that all returned ResourceIterators are either fully exhausted, or explicitly closed.
If you intend to exhaust the returned iterators, and you are sure that the code within the iteration will NOT throw any exceptions, you can use conventional code as you would with a normal Iterable:
ResourceIterable<Object> iterable;
for ( Object item : iterable )
{
...
}
However, if your code might not exhaust the iterator, (run until Iterator.hasNext()
returns false
), ResourceIterator
provides you with a ResourceIterator.close()
method that
can be invoked to release its associated resources early, by using a finally
-block, or try-with-resource.
ResourceIterable<Object> iterable;
ResourceIterator<Object> iterator = iterable.iterator();
try
{
while ( iterator.hasNext() )
{
Object item = iterator.next();
if ( ... )
{
return item; // iterator may not be exhausted.
}
}
}
finally
{
iterator.close();
}
- See Also:
-
Field Summary
-
Method Summary
-
Method Details
-
iterator
ResourceIterator<T> iterator()Returns aniterator
with associated resources that may be managed. -
stream
Returns anStream
of associated resources that may be managed. Care should be taken toBaseStream.close()
the stream to also close the underlyingResourceIterable
.- Returns:
- this iterable as a
Stream
-