在 运行 方法中打印一个实例
printing an instance in run method
我的问题是我们还没有在下面的代码中从 class A 创建一个对象,但是当我们打印时它是如何在 运行 方法中 return 一个值这个?这个对象是什么时候创建的?
class A implements Runnable {
@Override
public void run() {
System.out.println(this); // prints org.ISOFT.A@78a56018
}
}
你不要用那个代码创建一个A
的实例,事实上,正如所写的那样,代码本身会编译但不会打印任何东西并且什么都不做,因为它没有 main 方法,没有起点,也没有创建线程。
你只会看到你有new A()
的东西when/where,然后直接调用它的run()
方法,或者更常见,通过将其传递到线程中,例如 with
public class Foo {
public static void main(String[] args) {
new Thread(new A()).start();
}
}
在这里,Thread 对象将从 Thread 的 start()
方法中调用 A 的 run()
方法。
或者,
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.submit(new A());
executorService.shutdown();
这里又是创建线程,传入A,线程启动时间接调用A的run()
方法
所以,回答你的直接问题:
My question is that we have not created an object from class A in the following code yet,
正确
but how does it return a value in the run method when we print this?
它实际上从来没有“return是一个值”,因为它被声明为一个 void 方法,return什么都不是。并且发布的代码不会打印任何内容(这可能是您所说的“return 值”的意思),除非 A 对象被实例化并传递到线程对象中,然后启动该对象,如图所示以上。
When was this object created?
您发布的代码中没有任何地方。
我的问题是我们还没有在下面的代码中从 class A 创建一个对象,但是当我们打印时它是如何在 运行 方法中 return 一个值这个?这个对象是什么时候创建的?
class A implements Runnable {
@Override
public void run() {
System.out.println(this); // prints org.ISOFT.A@78a56018
}
}
你不要用那个代码创建一个A
的实例,事实上,正如所写的那样,代码本身会编译但不会打印任何东西并且什么都不做,因为它没有 main 方法,没有起点,也没有创建线程。
你只会看到你有new A()
的东西when/where,然后直接调用它的run()
方法,或者更常见,通过将其传递到线程中,例如 with
public class Foo {
public static void main(String[] args) {
new Thread(new A()).start();
}
}
在这里,Thread 对象将从 Thread 的 start()
方法中调用 A 的 run()
方法。
或者,
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.submit(new A());
executorService.shutdown();
这里又是创建线程,传入A,线程启动时间接调用A的run()
方法
所以,回答你的直接问题:
My question is that we have not created an object from class A in the following code yet,
正确
but how does it return a value in the run method when we print this?
它实际上从来没有“return是一个值”,因为它被声明为一个 void 方法,return什么都不是。并且发布的代码不会打印任何内容(这可能是您所说的“return 值”的意思),除非 A 对象被实例化并传递到线程对象中,然后启动该对象,如图所示以上。
When was this object created?
您发布的代码中没有任何地方。