2
geotools
'SimpleFeatureCollection
을 HDD의 모양 파일에서 한 번 만듭니다. 그런 다음 .features()
메서드를 여러 번 호출합니다. 지금까지 나는 이것이 훌륭한 습관이라고 믿었지만 그렇지 않은 것으로 보인다. 피쳐 메서드를 너무 많이 호출 한 후geotools의 SimpleFeatureCollection.features()를 한 번 이상 호출하면 "최대 잠금 횟수가 초과되었습니다"
Exception in thread "main" java.lang.Error: Maximum lock count exceeded
at java.util.concurrent.locks.ReentrantReadWriteLock$Sync.fullTryAcquireShared(ReentrantReadWriteLock.java:528)
at java.util.concurrent.locks.ReentrantReadWriteLock$Sync.tryAcquireShared(ReentrantReadWriteLock.java:488)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1282)
at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727)
at org.geotools.data.shapefile.files.ShpFiles.acquireRead(ShpFiles.java:358)
at org.geotools.data.shapefile.files.ShpFiles.getReadChannel(ShpFiles.java:789)
at org.geotools.data.shapefile.shp.ShapefileReader.<init>(ShapefileReader.java:253)
at org.geotools.data.shapefile.ShapefileSetManager.openShapeReader(ShapefileSetManager.java:51)
at org.geotools.data.shapefile.ShapefileFeatureSource.getReaderInternal(ShapefileFeatureSource.java:263)
at org.geotools.data.shapefile.ShapefileFeatureStore.getReaderInternal(ShapefileFeatureStore.java:124)
at org.geotools.data.store.ContentFeatureSource.getReader(ContentFeatureSource.java:563)
at org.geotools.data.store.ContentFeatureCollection.features(ContentFeatureCollection.java:165)
어떻게 이런 일이 발생하지 않도록 할 수 있습니까? 좋은 코딩 방법은 무엇입니까? 메서드를 호출하기 전에 매번 SimpleFeatureCollection
을 만들기 위해 모양 파일을 사용해야합니까? 어떤 통찰력이라도 대단히 감사하겠습니다.
유레카! 이것으로 해결했습니다. 고맙습니다. 전에 반복기를 닫은 적은 없지만 항상 첫 번째가 있습니다. 반복자는 일반적으로 닫히는가, 아니면 닫는 것을 요구하는 바로 그 것인가? – dotwin
그들은 실제 자원을 가지고 있기 때문에 이것들을 가지고 있습니다. –