一个线程可以同时运行两个方法吗?

时间:2016-12-20 02:42:38

标签: java multithreading

所以我创建了以下帖子:

public class test extends thread{
    public void run(){
        // Do stuff
    }
    public void onPause(){
        //Do stuff to prepare for pausing
    }
}

现在我的问题是假设这个线程当前正在执行run()方法,所有突然从我调用onPause()的主线程然后会使它停止执行run()并执行onPause()方法还是他们都会同时运行?

2 个答案:

答案 0 :(得分:1)

他们会同时运行,因为你指出你从主线程中调用{{1}}。

答案 1 :(得分:1)

从概念上讲,将Thread对象与实际线程混淆是错误的。线程被分配给一个Thread对象,因此在Thread上调用start会在该线程上执行Thread(或其Runnable)的run方法。

一个线程只是另一个对象(除非你做了一些限制访问的事情,比如添加锁定),没有什么能阻止多个线程执行它的方法。所以你的Thread的run方法可以同时调用;如果你的run方法调用Thread上的方法,比如isInterrupted,那将检查Thread对象的状态,而不是执行方法的线程的状态。 (使用Thread.currentThread()访问正在执行的线程。)

养成不扩展Thread而不是实现Runnable或Callable的习惯的一个好处是,由于你没有继承Thread方法,因此混淆的空间会少一些。