请问线程中,实现Runnable接口这个类中不是run方法体里面的Thread.sleep()这个方法,主线程调用这个方法时有效?
我个人认为是无效的,不知道对不对。问下大家。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Java中,Thread.sleep(long millis)
方法是静态方法,它属于Thread
类。当在任何线程中调用这个方法时,实际上都会使当前正在执行的线程暂停执行指定的毫秒数。这意味着,无论你是直接在主线程中调用它,还是在实现了Runnable
接口的类的run
方法中调用,或者是其他任何线程中调用,该方法都会影响到调用它的那个线程。
具体到您的问题,如果在实现了Runnable
接口的类的方法体中(比如在run
方法内)调用了Thread.sleep()
,这将使得执行该run
方法的线程(而非主线程或其他线程)暂停执行指定的时间。因此,如果你是在某个线程的上下文中执行了这个实现了Runnable
接口的类的实例,并且在这个实例的run
方法内部调用了Thread.sleep()
,那么受到影响的是这个工作线程,而不是主线程。
总结来说,您的理解可能需要稍微调整一下:Thread.sleep()
方法总是影响调用它的线程,不论这个调用发生在主线程还是其他任何线程中。所以,如果在Runnable实现类的run
方法里调用它,效果是让执行这个run
方法的线程休眠,而不是影响到主线程。