我有一種方法需要確保每個輸入在一個時間範圍內只運行一次。例如,該方法是;確保在x秒內每個輸入只調用一次方法
void performAction(String input);
當前實現阻止任何輸入x秒的方法;
int timeOut = 0;
void performAction(String input) {
if (hasBeenUsed()) return;
//carryout task
}
private boolean hasCallDelay() {
long currentTime = System.currentTimeMillis();
if ((currentTime - timeOut) < TIME_DELAY) return true;
timeOut = currentTime;
return false;
}
這適用於單一方法調用,有沒有一種優雅的方式來超時只有相同的輸入?所以如果輸入「HELLO」,它會在x次再次用「HELLO」呼叫之前忽略它。
我在想也許某種數據結構會在一段時間後刪除條目。也是現在這隻會被一個線程調用,但我猜上述解決方案不適用於多線程。
這是一個運行的本地服務,並且有幾個客戶端可以連接到它並調用該方法。問題是用戶可以在UI上雙擊並最終調用任務兩次,我可以在UI上修復此問題,但是我需要確保所有未來的客戶端也都這樣做,所以寧願停止服務。
最多可以添加使用情況對於這個問題,以便更好地理解你的問題.. – Karthikeyan 2015-03-13 10:55:42
添加一些更多的信息 – user3032878 2015-03-13 10:59:53