2014-04-24 97 views
0

我正在做的庫要求用戶在對象的構造函數中輸入延遲。我想這樣做,所以他們不必在構造函數中輸入延遲(我不想使用多個構造函數),並將延遲設置爲默認值,稍後可以通過方法進行更改。這很容易,如果我稍後通過另一種方法啓動線程,但我希望線程在構造函數中啓動。更改scheduleWithFixedDelay延遲(Java)

有沒有辦法取消正在執行的runnable或更改其延遲?

示例代碼:

public ExampleClass(Object value1, Object value2) { 
    executor.scheduleWithFixedDelay(new Task(), 0, 100, TimeUnit.MILLISECONDS); 
} 

public void cangeDelay(int delay) { 
    //what to do here? 
} 

private class Task implements Runnable { 
    public void run() { 
     //do something 
    } 
} 
+1

你真的想解決什麼問題?當你說,「我不想使用多個構造函數。」這讓我想你可能正在尋找這個:http://en.wikipedia.org/wiki/Builder_pattern –

+0

「有沒有辦法取消正在執行的runnable或更改其延遲?」 Runnable沒有「延遲」。如果_your_ runnable有一個,那是因爲你添加了它。 –

+0

@jameslarge我希望它很容易使用,默認值是99%的時間,但我也希望它是可配置的。 – user2248702

回答

0

scheduleWithFixedDelay()返回一個未來中,f。您可以調用f.cancel(),然後以不同的速率再次安排任務。