Java Runnable 正在访问 class 的对象
Java Runnable accessing a class's object
我有一个 class,它有一个每 10 秒 运行 的作业,如下面的代码块所示。然而,在 Runnable() 中,我无法访问 class 的对象。我假设它与 Java.
中的线程安全有关
如果我实现 Runnable,我将不得不提供一个 run()
函数。我真的不想这样做。我想要做的是让 class 有它自己的正常功能,但只需要在其中每 X 秒执行一次 运行s 的工作,并访问 class 的 LinkedList。我下面的 运行 包含在 scheduleAtFixedRate
中,而不是 class 本身。
有什么想法吗?
public class MyClass {
private volatile LinkedList<String> words;
public MyClass() {
this.words = new LinkedList<String>();
this.cleanup();
}
public void cleanup() {
ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
exec.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
// can't access this.words here
}
}
}, 0, 10, TimeUnit.SECONDS);
}
使用 MyClass.this.words
,或仅 words
。
可以使用 X.this
访问对外部 class X
的 this
引用。如果外部 class 是匿名的 class(在本例中不是),这将不起作用。
或者,您可以只使用 words
而不是 something.words
- 与 this
一样,编译器将自动使用 X.this
。
我有一个 class,它有一个每 10 秒 运行 的作业,如下面的代码块所示。然而,在 Runnable() 中,我无法访问 class 的对象。我假设它与 Java.
中的线程安全有关如果我实现 Runnable,我将不得不提供一个 run()
函数。我真的不想这样做。我想要做的是让 class 有它自己的正常功能,但只需要在其中每 X 秒执行一次 运行s 的工作,并访问 class 的 LinkedList。我下面的 运行 包含在 scheduleAtFixedRate
中,而不是 class 本身。
有什么想法吗?
public class MyClass {
private volatile LinkedList<String> words;
public MyClass() {
this.words = new LinkedList<String>();
this.cleanup();
}
public void cleanup() {
ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
exec.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
// can't access this.words here
}
}
}, 0, 10, TimeUnit.SECONDS);
}
使用 MyClass.this.words
,或仅 words
。
可以使用 X.this
访问对外部 class X
的 this
引用。如果外部 class 是匿名的 class(在本例中不是),这将不起作用。
或者,您可以只使用 words
而不是 something.words
- 与 this
一样,编译器将自动使用 X.this
。