了我第一次在Java中使用定時器方法,它似乎並不像我在其他語言中使用過其它定時器的方法一樣簡單(即C++)計時器不能使用所有參數的主要功能
我想有一個函數,每秒鐘都會調用,而在其他多個線程的背景中發生其他事情。
我碰到一個方法,似乎在主函數內部工作,只要定時器函數中引用的變量被定義爲final。一個變量我不能作爲final,所以我在定時器函數中引用它時遇到了問題。
所以,我的問題是,這是使用計時器方法的好方法嗎?請記住,我可能需要在定時器功能中使用大量的項目?還是使用不同的方法訪問單變量引用讓我悲傷?這個解決方案可能很簡單,如果是這樣的話,我很抱歉,這是一個漫長的一天,而且我正處於一個讓我的大腦偶爾關閉的最後期限。
感謝任何幫助/建議等
這裏是我的代碼如下所示:
public static void main(String[] args) {
Timer timer = new Timer();
String StringThatWillBeChangingOften = "";
final String finalString = "abc";
try{
timer.scheduleAtFixedRate(new TimerTask() {
String s = StringThatWillBeChangingOften; //ERROR ON THIS LINE
public void run() {
//Referencing other variables from main works fine as long they are defined as final
//ie finalString works fine
}
}, 1000, 1000);
//Catch...
}
}
當您的Timer的run()方法被執行時,您是否希望它使用它在創建計時器時所具有的'StringThatWillBeChangingOften'的值,或者是否希望它使用它的'StringThatWillBeChangingOften'值現在呢? – 2014-10-12 06:45:53
它可以被視爲通過參考傳遞 - 不會改變它在計時器內 – DenizC 2014-10-12 07:03:06
這並不真正回答我的問題。 – 2014-10-12 07:08:48