作者回复: 👍
作者回复: 好问题,CyclicBarrier的回调函数执行在一个回合里最后执行await()的线程上,而且同步调用回调函数check(),调用完check之后,才会开始第二回合。所以check如果不另开一线程异步执行,就起不到性能优化的作用了。
作者回复: 对,👍👍👍
作者回复: 所以才需要线程池来异步执行回调函数,你一不小心把答案找到了😂
作者回复: 好建议,所有的阻塞操作,都需要设置超时时间,这是个很好的习惯。
作者回复: 有这种可能,还能oom
作者回复: 会
作者回复: 放到不同的类里,这方面传统的面向对象可以解决,lambda也能解决,这个模块的最后几章能解决你说的这个问题,但是更复杂的场景还得自己设计
作者回复: 多个线程有这个可能,所以线程池用的是单线程的
作者回复: 方案上基本都是限流
作者回复: 反正也不会反复创建,用不用都没关系
作者回复: 👍
作者回复: 回调函数执行完之后才会唤醒等待的线程。
作者回复: 👍
作者回复: 一一是一组和一组等价,check的时候也是批量操作。没有就就放一个空对象做占位就可以了
作者回复: 一次多取几个然后批量执行,这个办法非常实用!
作者回复: 是的
作者回复: 查询数据库一定是批量查询的,先把订单的id查出来,然后用这些id就能并行查了,cyclicbarrier能循环利用,用起来更简单,你可以用countdownlatch实现一下,就知道他们的区别了