Vis*_*hnu 1 java multithreading
我有两个关于多线程编程的问题.我在网上看了几个答案,但我仍然找不到令人满意的答案.
实现Runnable比扩展线程类更受欢迎.为什么?
我们如何能够通过覆盖run()方法来逃脱?
根据Herbert Schildt的"The Complete Reference to Java",如果我们没有覆盖除run()之外的Thread类的任何方法,那么我们最好实现Runnable.
我的第二个问题可能听起来有点傻,但我似乎错过了一些东西,我不确定整个事情是如何运作的.
1:实现Runnable比扩展线程类更受欢迎.为什么?
因为它允许你的类扩展另一个类,如果它想要而不是被迫扩展Thread.
2:我们如何能够摆脱run-()方法的过度消除?
您当然可以覆盖其他方法,但该Thread对象将run()在线程启动时调用该方法.这就是它的工作原理.默认Thread.run()方法是:
public void run() {
if (target != null) {
target.run();
}
}
Run Code Online (Sandbox Code Playgroud)
如果你Thread使用a 设置构造函数,Runnable那target就是设置的.如果您改为扩展Thread,@Override那么run()方法就是在启动线程对象时将调用的方法.
这就是Thread班级的工作方式.
2:我们如何能够摆脱run-()方法的过度消除?
您可能在这里遇到了错误,而是询问为什么我们只需要实现该run()方法Runnable().
确保使用正确的Java术语,不要混淆implement和override.