探索HTTP客户端活页夹Feign,我看到它是does not support回调结果(DeferredResults)。那么我将如何处理创建可扩展端点以并行执行许多时间密集型任务?试图避免这样的事情:
DrawerLayout drawer = (DrawerLayout) getActivity().findViewById(R.id.drawer_layout);
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
答案 0 :(得分:1)
我是否理解这一点:'def endpoint'是一种同步阻塞方法,你不能改变这个事实,因为它是由框架决定的?
现在,这意味着您必须阻止等待计算/ IO返回给您。这也意味着你在那里使用一个线程。
我认为你可以做到最好,以防止该端点与许多等待线程“重载”。所以:
val waiting = new AtomicInteger(0) val maxThreadsWaiting = 200 def endpoint() ={ try{ val numberThreadsWaiting = waiting.incrementAndGet() if(numberThreadsWaiting > maxThreadsWaiting) { // Return 'overload' failure. Like HTTP 503 } else{ Await.result(slowComputation(), Duration(1, SECONDS)) } } finally { waiting.decrementAndGet() } }