我有一個對客戶ID進行迭代的for循環,還有一個process函數,它在相同的for循環中處理這些客戶。
Scenario:-
在執行for循環時,如果發現重復的客戶,那么我們應該檢查客戶的舊流程是否完成。如果完成了,那么我們必須等待。
在這里,我不想停止整個for循環的執行,因為可以處理具有不同id的其他客戶。
所以,是否有任何方法可以使用相同的for循環來停止正在等待特定客戶的流程的一部分,同時執行其他流程。
example
for(customer:customers)
{
if(customer.isRepeated())
{
if(customer.inProcess())
{
wait();
}
}
process(customer);
}
對于您描述的問題,另一個答案中的multithreaded方法可能是理想的。但如果您想保持single-threaded,并在處理已準備好的客戶時推遲對尚未準備好的客戶的處理,那么這可能會起作用。
在這里,我們創建了另一個
waitingCustomers
列表,這是一個我們稱之為.wait()
的客戶列表。當我們聯系到需要等待的客戶時,我們將其放在waitingCustomers
列表中,而不是這樣做。然后我們重復整個代碼塊,直到waitingCustomers
列表為空。