请解释以下代码的输出:
如果我致电th1.run()
,输出为:
EXTENDS RUN>>
RUNNABLE RUN>>
如果我致电th1.start()
,输出为:
RUNNABLE RUN>>
EXTENDS RUN>>
为什么会有这种不一致?请解释。
class ThreadExample extends Thread{
public void run() {
System.out.println("EXTENDS RUN>>");
}
}
class ThreadExampleRunnable implements Runnable {
public void run() {
System.out.println("RUNNABLE RUN>>");
}
}
class ThreadExampleMain{
public static void main(String[] args) {
ThreadExample th1 = new ThreadExample();
//th1.start();
th1.run();
ThreadExampleRunnable th2 = new ThreadExampleRunnable();
th2.run();
}
}
该Thread.start()
方法启动一个新线程,该线程的入口点就是run()
方法。如果直接调用run(),它将在同一线程中执行。假设调用Thread.start()
将启动一个新的执行线程,则该run()
方法可在其余主方法执行之后(如您的示例)被调用。
将您的main方法更改为调用th1.start()
并重复运行,您会发现有时它会输出:
EXTENDS RUN>>
RUNNABLE RUN >>
有时它输出:
RUNNABLE RUN >>
EXTENDS RUN>>
取决于Java选择如何安排2个线程。
查看有关此内容的Java教程。
这是代码。 输出是''
本文向大家介绍请解释hashCode()和equals()方法有什么联系?相关面试题,主要包含被问及请解释hashCode()和equals()方法有什么联系?时的应答技巧和注意事项,需要的朋友参考一下 考点:基础 Java对象的eqauls方法和hashCode方法是这样规定的: ➀相等(相同)的对象必须具有相等的哈希码(或者散列码)。 ➁如果两个对象的hashCode相同,它们并不一定相同。
根据我,3个新的对象将创建。一个转到字符串池,两个匿名对象将由new运算符创建。但我不确定。 如果我错了,请解释。
本文向大家介绍以下方法调用call输出的结果是什么?请解释下?相关面试题,主要包含被问及以下方法调用call输出的结果是什么?请解释下?时的应答技巧和注意事项,需要的朋友参考一下 结果:{ 0: 1, 3: 1, length: 5 } 首先类数组转换为数组 [undefined, undefined, undefined, 1, undefined] 然后进行 copyWithin(0, 3)
有人能解释一下last()和takeLast()方法的区别吗?正如文件所述: last()-将完成信号之前观察到的最后一个元素作为单声道发出,或者如果源为空,则发出NosTouchElementException错误。对于被动版本,请使用takeLast(int) TakeLast()-在此Flux完成之前发出最后N个值。 对我来说是一样的。我不能理解的差异。有人能给我举个简单的例子吗?提前感谢
本文向大家介绍Java线程中start和run方法全面解析,包括了Java线程中start和run方法全面解析的使用技巧和注意事项,需要的朋友参考一下 自定义线程两种方法 自定义一个runnable接口的实现类,然后构造一个thread,即对thread传入一个runnable接口类。 new一个thread或者写个thread子类,覆盖它的run方法。(new 一个thread并覆盖run方法实