我有一個大的嵌套循環(深達6層),生成一個決策樹。然而,這是一個相當耗時的計劃,當時間到了,我需要中止這一代。嵌套循環和超時
我知道每個循環都有可能檢查定時器,但會降低效率。我正在考慮使用監視器線程或類似的機制,我想知道是否有一種有效的方法來設置整個循環的暫停和中斷(可能使用「goto」子句)?
或者我應該只是將嵌套循環切成嵌套線程?
我有一個大的嵌套循環(深達6層),生成一個決策樹。然而,這是一個相當耗時的計劃,當時間到了,我需要中止這一代。嵌套循環和超時
我知道每個循環都有可能檢查定時器,但會降低效率。我正在考慮使用監視器線程或類似的機制,我想知道是否有一種有效的方法來設置整個循環的暫停和中斷(可能使用「goto」子句)?
或者我應該只是將嵌套循環切成嵌套線程?
您可以測試檢查你的內心最環路的定時器,如果太慢其移動到,如果太慢你Level 4
...
如果要停止整個如果它沒有完成一定的時間限制,則可以將所有循環放入一個線程,並允許該線程在特定時間運行,如果未完成則終止。下面是我會怎麼做:
Thread generationThread = new Thread(){
public void run(){
// All your loops
// You can check for isInterrupted and simply return to terminate the process
if(isInterrupted()){
return;
}
}
}
generationThread.start();
generationThread.join(MAX_TIME); // how long in ms this process is allowed to run
// Terminate the thread if it did not finish
if(generationThread.isAlive()){
generationThread.interrupt();
}
這對於圖示碼只,根據需要改變它。
您是否嘗試過計算檢查超時的版本,以及沒有的版本? – thegrinner
你是否真的試圖用定時器檢查來分析你的代碼?它通過了1%的工作時間嗎? – Dariusz