所以我用代碼的工作有點像這樣:如果我依賴慢速服務,我該如何避免花費處理器等待它的時間?
public void callSlowService(List<Object> objectsToCallFor) {
objectsToCallFor
.parallelStream()
.forEach(object -> slowService.call(object))
}
凡slowService.call花費〜100-500ms
的問題是,我可以並行所有我想要的,但在年底那天我仍然鎖定了一個線程,等待500毫秒,我的CPU還有其他線程可以做的其他事情。
假設我無法改變這個其他服務(我不能),有沒有其他設計可以在我的身邊使用,這樣我的CPU就可以在等待slowService的響應時做其他事情嗎?
如果你打電話來訪問服務的內容是合理的,你就是阻塞,而不是花費處理器時間。 – EJP
是的,我真的不會擔心一個正在等待的線程。線程是輕量級的(與進程不同),並且在虛擬機扼殺之前可以有數千個線程。 – john16384