所以我创建了以下帖子:
public class test extends thread{
public void run(){
// Do stuff
}
public void onPause(){
//Do stuff to prepare for pausing
}
}
现在我的问题是假设这个线程当前正在执行run()方法,所有突然从我调用onPause()的主线程然后会使它停止执行run()并执行onPause()方法还是他们都会同时运行?
答案 0 :(得分:1)
他们会同时运行,因为你指出你从主线程中调用{{1}}。
答案 1 :(得分:1)
从概念上讲,将Thread对象与实际线程混淆是错误的。线程被分配给一个Thread对象,因此在Thread上调用start会在该线程上执行Thread(或其Runnable)的run方法。
一个线程只是另一个对象(除非你做了一些限制访问的事情,比如添加锁定),没有什么能阻止多个线程执行它的方法。所以你的Thread的run方法可以同时调用;如果你的run方法调用Thread上的方法,比如isInterrupted,那将检查Thread对象的状态,而不是执行方法的线程的状态。 (使用Thread.currentThread()访问正在执行的线程。)
养成不扩展Thread而不是实现Runnable或Callable的习惯的一个好处是,由于你没有继承Thread方法,因此混淆的空间会少一些。