Gre*_*reg 7 java netbeans sleep compiler-warnings
当我将下面的代码放在NetBeans中时,NetBeans会在旁边给出一个警告,说"访问静态方法睡眠".
try {
Thread.currentThread().sleep(2000);
}
catch(InterruptedException ie){
//continue
}
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?我应该以不同的方式打电话吗?我没做任何多线程的事情.我只是有一个简单的主要方法,我想睡一会儿.
Joh*_*int 10
Thread.currentThread()返回Thread类的一个实例.在调用静态方法时,您只想处理类本身.因此,在当前线程上调用静态方法,您将收到一个警告,即您正在实例上调用该方法.
你只需要打电话Thread.sleep(2000); 就可以了Thread.currentThread.sleep(2000);
这一点很重要,因为人们已经被烧成了类似的东西:
Thread a = new Thread(someRunnable);
a.start();
a.sleep(2000); //this will sleep the current thread NOT a.
Run Code Online (Sandbox Code Playgroud)
编辑:那我们怎么睡觉呢?你通过在传递给构造函数的runnable中编写睡眠调用来睡眠,如:
Runnable someRunnable = new Runnable(){
public void run(){
Thread.sleep(2000);
}
};
Run Code Online (Sandbox Code Playgroud)
当'a'启动时,someRunnable的run方法中的Thread.currentThread是'a'线程实例.
sleep是静态的,所以你用它来访问它Thread.sleep(2000);.它会影响当前线程.
来自javadoc:
使当前正在执行的线程休眠(暂时停止执行)指定的毫秒数.该线程不会失去任何监视器的所有权.
这意味着您无法再睡眠另一个线程,只能访问代码所在的线程.
| 归档时间: |
|
| 查看次数: |
5119 次 |
| 最近记录: |