Java 如何将参数传递给ScheduledThreadPoolExecutor?

Java 如何将参数传递给ScheduledThreadPoolExecutor?,java,multithreading,scheduledexecutorservice,Java,Multithreading,Scheduledexecutorservice,如何将参数传递给ScheduledThreadPoolExecutor 我有以下代码。您会注意到,我声明了一个变量'num',并将其作为参数传递给exampleFunction()。exampleFunction包含ScheduledThreadPoolExecutor。我希望能够在public void run()中使用变量'num'。我有办法做到吗 class Test { ... int num; exampleFunction(num);

如何将参数传递给ScheduledThreadPoolExecutor

我有以下代码。您会注意到,我声明了一个变量'num',并将其作为参数传递给exampleFunction()。exampleFunction包含ScheduledThreadPoolExecutor。我希望能够在public void run()中使用变量'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'是否仍然有效?