Cos*_*inO 1 java multithreading
假设我有一个扩展Thread的类.
所以从目前为止我所知道的:
在run()直接调用时,该方法被视为普通方法,并且不会导致JVM为其创建新线程.
为了让它按预期工作,start()必须调用该run()方法,然后在某些操作系统暗淡的juju魔法发生之后调用该方法.
我的问题是:
是否有人可以超载start()/run()并保持正常行为?
注意:你错误的好奇心是愚蠢的,不需要粗鲁.
如果您Thread通过分别调用Thread's' start或run方法进行子类化,则可以执行此操作.但是,如果您打算将参数传递给底层代码,我建议您实现一个Runnable而不是将参数保持在其状态:
class MyRunnable implements Runnable {
private final int a;
private final int b;
public MyRunnable(int a, int b) {
this.a = a;
this.b = b;
}
@Override
public void run() {
// do something with a and b
}
}
Run Code Online (Sandbox Code Playgroud)
a并且b是这个示例中的一些参数.您可以Thread在其构造函数中将实例传递给a ,然后将其传递给start它.顺便说一下,这是命令模式的一种实现.