假设我有一个名为“Example”的类
在“示例”中我有一个可运行的内部类
我在“Example”中执行runnable
public class Example {
public Example() {
//executing the runnable here
}
private void a() {
}
public void b() {
}
public class RunMe implements Runnable {
public void run() {
a();
b();
}
}
}
假设 Example 在主线程上运行会发生什么?
a 和 b 是从 RunMe 线程还是主线程运行?
a 是私有(private)的 b 是公共(public)的有关系吗?
最佳答案
您错过了使我们能够回答您的问题的关键代码段 - 构造函数。
如果你的构造函数看起来像这样:
public Example() {
(new Thread(new RunMe())).start();
}
然后 a()
和 b()
将在您刚刚创建的线程(您称之为“RunMe”线程)上运行。
但是,如果您的构造函数如下所示:
public Example() {
(new RunMe()).run();
}
然后你实际上并没有在另一个线程上运行它(你只是在另一个类中调用一个方法,它恰好被称为“运行”),所以 a()
和b()
将在“主”线程上运行。
私有(private)/公共(public)的东西在这里是无关紧要的,因为 RunMe
是一个内部类,所以甚至可以访问 Example
的私有(private)方法。
关于java - 内部类可在 Java 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20370755/