Java 如何将参数传递给ScheduledThreadPoolExecutor?
如何将参数传递给ScheduledThreadPoolExecutor 我有以下代码。您会注意到,我声明了一个变量'num',并将其作为参数传递给exampleFunction()。exampleFunction包含ScheduledThreadPoolExecutor。我希望能够在public void run()中使用变量'num'。我有办法做到吗Java 如何将参数传递给ScheduledThreadPoolExecutor?,java,multithreading,scheduledexecutorservice,Java,Multithreading,Scheduledexecutorservice,如何将参数传递给ScheduledThreadPoolExecutor 我有以下代码。您会注意到,我声明了一个变量'num',并将其作为参数传递给exampleFunction()。exampleFunction包含ScheduledThreadPoolExecutor。我希望能够在public void run()中使用变量'num'。我有办法做到吗 class Test { ... int num; exampleFunction(num);
class Test {
...
int num;
exampleFunction(num);
...
public void exampleFunction(num) {
ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);
exec.schedule(new Runnable() {
public void run() {
...do something here...
...something with 'num' here...
...i get an error when i try to use 'num' here
}
}, 10, TimeUnit.SECONDS);
}
}
声明变量num
final
,您将能够在Run()
方法中使用它
写下这个
final int num;
您是否尝试将
exampleFunction(num)
更改为exampleFunction(final int num)
?由于run方法位于内部类中,所以所有外部绑定都必须是final
public void exampleFunction(final int num) { // final int here
ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);
exec.schedule(new Runnable() {
public void run() {
...do something here...
...something with 'num' here...
...i get an error when i try to use 'num' here
}
}, 10, TimeUnit.SECONDS);
}
使
num
final
或static
(或通过static
方法访问),或者创建自己的可运行的
类MyRunnable实现Runnable{
int-num;
公共MyRunnable(int num){
this.num=num;
}
公共无效运行(){…}
}
请在标记您的问题时多做些努力:这是纯java多线程,与swing/x无关,java eeThis奏效了!如果'num'的值不断变化,它是否仍然有效。如果'num'在循环中,并且它的值在循环中不断变化,并且为'num'的每个值调用exampleFunction(),那么将num声明为'final int num'是否仍然有效?