Open Zouxxyy opened 4 years ago
选举Leader的一个需求是 candidate 请求投票时,如果有超过半数的响应为 success,就获选leader。
但这处代码的实现是:通过 CountDownLatch(size)阻塞实现,且是在全部都响应了才开始判断。
而且这部分的异步任务处理 分提交和检测完成两次,觉得写的有点繁琐。个人觉得可使用一个ExecutorCompletionService,写起来更清晰,同时在每次take后检测是否有超过半数的成功响应。
CountDownLatch latch_1 = new CountDownLatch(futureArrayList.size() / 2); 把全部 改为 一半 怎么样?
选举Leader的一个需求是 candidate 请求投票时,如果有超过半数的响应为 success,就获选leader。
但这处代码的实现是:通过 CountDownLatch(size)阻塞实现,且是在全部都响应了才开始判断。
而且这部分的异步任务处理 分提交和检测完成两次,觉得写的有点繁琐。个人觉得可使用一个ExecutorCompletionService,写起来更清晰,同时在每次take后检测是否有超过半数的成功响应。