如何在java中摆脱这种"静态方法应该以静态方式"?

Vic*_*tor 5 java concurrency multithreading sleep thread-sleep

我在java应用程序中有以下代码

Thread.currentThread().sleep(10000);
Run Code Online (Sandbox Code Playgroud)

然而eclipse正在向我显示以下警告:

The static method sleep(long) from the type Thread should be accessed in a static way
Run Code Online (Sandbox Code Playgroud)

我很自豪永远不会发布带警告的代码,我想摆脱这个警告(它发生在两个不同的类中).我需要发布整个代码吗?

Jon*_*eet 33

你打电话

Thread.sleep(10000);
Run Code Online (Sandbox Code Playgroud)

总是使当前线程睡眠.即使你这样做了:

Thread t = new Thread(...);
t.start();
t.sleep(10000);
Run Code Online (Sandbox Code Playgroud)

仍然会使当前线程休眠10秒,同时让新线程继续快乐.这几乎就是为什么这个警告很重要的典型例子 - 这是因为你正在调用一个静态方法,就像它是一个实例方法一样,这使得它看起来很重要你正在调用它.它没有.甚至没有检查该值是否为null:

Thread t = null;
t.sleep(10000); // Still sleeps for 10 seconds...
Run Code Online (Sandbox Code Playgroud)

(我很自豪地说,我最初在2002年6月在Eclipse中提交了这个警告的功能请求 :)

  • ahahah Jon Skeet回答了我的问题,应该有一个徽章! (5认同)