我在kotlin中使用redisson ExecutorService,但是发生了这样的异常,“ java.util.concurrent.RejectedExecutionException:任务被拒绝。ExecutorService处于关闭状态”。
class RunnableTask : Runnable ,Serializable{
private val redissonClient: RedissonClient? = null
private var param: Long=0
override fun run() {
val atomic = redissonClient!!.getAtomicLong("myAtomic")
atomic.addAndGet(param)
}
}
fun main(args: Array<String>) {
val config = Config()
config.useSingleServer()
.setAddress("redis://127.0.0.1:6379")
val redisson = Redisson.create(config)
val nodeConfig = RedissonNodeConfig(config)
nodeConfig.setExecutorServiceWorkers(Collections.singletonMap("myExecutor", 1))
val node = RedissonNode.create(nodeConfig)
node.start()
val e = redisson.getExecutorService("myExecutor")
e.execute( RunnableTask())
e.shutdown()
node.shutdown()
}
我使用redisson 3.11.5。
答案 0 :(得分:1)
什么对我有用:
val e = redisson.getExecutorService("myExecutor")
if (e.isShutdown()) {
e.delete()
}
我假设没有连接任何工人来处理任务时,远程执行程序会进入关闭状态。
答案 1 :(得分:0)
在execute
和shutdown
方法调用之间花费相同的时间。