C g*_*ics 2 java static multithreading delay
在下面的代码中,编译器建议我使用Thread.sleep(静态引用)而不是this.sleep,为什么会这样?
public class CThreadUsingThread extends Thread{
public void run(){
for (int i = 0; i < 10; i++) {
System.out.println("Thread running:"+i);
try {
// Why Thread.sleep(Math.round(Math.random()*1000)); is preferred?
this.sleep(Math.round(Math.random()*1000));
} catch (InterruptedException e) {
System.err.println("Thread interrupted!");
}
}
}
public static void main(String [] orgs){
CThreadUsingThread thread = new CThreadUsingThread();
thread.start();
}
}
Run Code Online (Sandbox Code Playgroud)

基本上,你的代码有误导性.它看起来像你指的是一个特定的线程,当实际上它只是调用静态Thread.sleep哪种方法总是指当前执行的线程.
在这种特殊情况下这不是巨大的误导性,但它仍然不是很好.考虑这个更糟糕的情况:
CThreadUsingThread thread = new CThreadUsingThread();
thread.start();
thread.sleep(1000);
Run Code Online (Sandbox Code Playgroud)
它的线程看起来像将派睡觉?它实际上会发送到哪个线程睡觉?
另外,我还要:
C类的前缀; CThreadUsingThread不是传统的Java名称Runnable并将其传递给Thread构造函数,而不是Thread直接子类化.这是一个更清晰的代码分离,它明确地涉及线程和代码,它只是给线程一些代码来运行.| 归档时间: |
|
| 查看次数: |
184 次 |
| 最近记录: |