|
|
1
10
Thread.currentThread()返回Thread类的实例。当调用静态方法时,您只需要处理类本身。因此,在当前线程上调用静态方法时,如果在实例上调用该方法,将收到警告。
你只要打个电话就行了
要知道这一点很重要,因为人们在做以下事情时被烧伤:
当“a”启动时,Thread.currentThread 在someRunnable中,run方法是“a”线程实例。 |
|
|
2
6
从javadoc:
|
|
|
3
2
与相同
|
|
|
4
2
线程实例上没有对应于“sleep(long)”的方法。 Thread.currentThread()睡眠(2000年);但是,由于thread类上有一个名为sleep()的方法具有长参数,因此无法编译。 Java允许将此作为编译器时间技巧,以便新的程序员在对方法的静态访问感到困惑时可以执行此操作。 但是,在编译器中,这实际上解决了: Thread.sleep(2000); 以下代码也是等效的: t、 睡眠(2000年);
警告的存在使您记住您访问的是类的静态方法,而不是实例变量的方法。 要编写的适当代码总是Thread.sleep(2000); - 切勿通过实例访问静态方法,以避免混淆和此警告。 |
|
|
5
1
netbeans警告您,因为您是从线程引用而不是从线程类访问静态方法。
sleep方法导致当前正在执行的线程sleep.So 不用打电话了Thread.currentThread(). |
|
|
6
1
当您试图使用object访问静态方法时,这不是最佳实践,NB会在那时发出警告,这里是相同的情况
|