AWS Java TransferManager问题,JVM无法获取更多本机线程

Eri*_*las 6 java amazon-s3 amazon-web-services

TransferManager几个星期以来我一直在争论一个问题,我希望得到一些反馈,

我有一个服务器应用程序,等待发送给它的任务.其中一些任务需要上传到S3.该任务包含我需要的所有上传信息,包括访问密钥.

在我的实际上传的代码,我需要创建一个新的S3ClientTransferManager对象每次我需要做的上传,因为我不知道提前我的访问密钥的时间.

在系统处理大约1200个上载后,我收到一个错误,指示JVM无法获得更多本机线程.我将一个分析器附加到应用程序,并注意到该TransferManager对象没有得到正确清理,有成千上万的"s3-transfer-manager-worker-1"线程处于空闲状态.

我试图TransferManager.shutdownNow()在上传完成后添加一个电话.这确实清理了线程.但是,RejectedExecutionException无论何时TransferManager创建新内容并尝试上传,我都会收到.

TransferManager包含一个UploadMonitorUploadMonitor具有静态ScheduledExecutorService. TransferManager.shutdownNow()调用UploadMonitor.shutdownNow()调用shutdownNow()执行程序服务的静态方法.这使得我不能再使用任何TransferManager对象,即使我尝试创建一个新对象.

如何在不耗尽线程的情况下使用多个传输对象?这似乎是一个错误.