public class HelloRunnable implements Runnable {
public void run() {
System.out.println("Hello from a thread!");
}
public static void main(String args[]) {
(new Thread(new HelloRunnable())).start();
} }
根据Java
Doc
该
Runnable
接口定义了一个单一方法,run
旨在包含在线程中执行的代码。将Runnable对象传递给Thread构造函数。
因此, 当我们执行HelloRunnable时,谁调用了内部run方法? 在Thread
类中,start
方法如下所示:
public synchronized void start() {
if (threadStatus != 0)
throw new IllegalThreadStateException();
group.add(this);
start0();
if (stopBeforeStart) {
stop0(throwableFromStop);
}
}
从这段代码中,我们可以看到start方法没有调用该run()
方法。
在以下文档中start
正确声明:
Java虚拟机调用
run
此线程的方法
因此,正是start0
JVM中的本机代码负责调用run
新创建的线程。(这并不是很意外,因为启动线程是非常特定于操作系统的,并且不能用纯Java实现。)
注意 :start0
不run
直接呼叫。而是(在高级视图中,忽略JVM内部管理),它指示操作系统创建一个新线程并让该线程执行run
。
为了澄清起见,以下是有关方法的简短说明:
start
是启动new的高级功能Thread
。
start0
是从操作系统创建新线程并负责确保run
被调用的本机方法。
run
是您的Runnable
类中定义的方法。此方法将在新线程中执行。一个Thread
在Java本身对象有没有关于用户代码应该执行的想法。这是关联Runnable
对象的责任。
因此,当您调用时Thread.start()
,将自动调用的run
方法Runnable
。
当然,您总是可以显式调用run
方法Runnable
:
HelloRunnable hr = new HelloRunnable();
hr.run();
但是,这当然 不会 在单独的线程中执行,而是会阻止执行。
我在超类中有一个重载方法的基本继承情况。 下面的类扩展了上面的类: main方法只是创建一个对象(静态和动态类型)并调用: 最后打印出来 看了这个,我想既然对象的静态和动态类型都是,它会调用Person中的重载方法,该方法将作为参数。由于我显然错了,我打开了一个调试器,假设类中的getWorkDetail(this)行中对“this”的引用一定已经变成了它的超级类。然而,这不是我发现的。 显然,在
本文向大家介绍常用的调用WebService的方法有哪些?相关面试题,主要包含被问及常用的调用WebService的方法有哪些?时的应答技巧和注意事项,需要的朋友参考一下 答: 1.使用WSDL.exe命令行工具。 2.使用VS.NET中的Add Web Reference菜单选项
问题内容: 是否有一种方法可以使每次调用方法时都会被调用的“超级方法”,即使对于未定义的方法也是如此?有点像这样: 编辑- 细节:我有一个库,该库进行了很多更新,并且每次更新都变得晦涩难懂。为了简化我的工作流程,我正在使程序自动更新库(需要执行我想做的事情,我不会具体说明原因,但是我的程序可以与将来的更新一起使用)并且我有混淆映射与库一起下载时,我想制作一种例如称为的代理,然后在我调用它时,将获得
我正在寻找答案,但无法找到以下答案。 默认情况下,我已经加载了片段A。 现在,我添加新的片段(B)与和片段B是可见的 用户向后按,FragmentManager将弹出片段B,片段A再次可见 所以我的问题是,当片段B被分离时,片段A中的哪个方法将被调用,我正在调试片段A中的所有onResume、onAttach,但看起来它没有被调用。 有一点,如果我们使用替换片段而不是添加片段,它将用片段生命周期运
我有一个层,称为,另一个称为。我想知道我是否可以强制执行一条规则,上面写着: 在参数列表包含名为foo的参数的服务层中的任何公共类的任何公共方法中,断言它从权限层调用方法(理想情况下,确保在服务层中的任何其他方法之前调用该方法)。 ArchUnit可以这样做吗?
但是不知何故,method3()并没有被嘲笑,我仍然看到它打印的内容。但是,我可以成功地模拟method2()。也许是因为method2()是从method1()直接调用的,我正在测试的方法是什么?请建议我如何模拟方法3。 谢谢,梅赫