了我第一次在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