当外部访问方法时,Java线程如何表现?

时间:2010-06-22 00:32:39

标签: java

假设我有以下线程:

public class MyThread {
    public void run() {
        while (true) {
            // do something forever
        }
    }
}

然后我按如下方式实例化线程:

MyThread thread = new MyThread();

如果我现在致电

会发生什么
thread.performSomeFunction()

具体来说,performSomeFunction如何与上面的无限循环交互?是否必须等待循环睡眠?或者他们都可以“同时”运行?

1 个答案:

答案 0 :(得分:3)

如果从另一个线程调用thread.performSomeFunction(),则不必与run()方法中运行的无限循环竞争。在这种情况下,您的MyThread实例被视为可以在其上调用方法的另一个对象。

请注意,在启动thread实例之前,无限循环才会启动。

您可以通过在run()方法和perfomrSomeFunction()方法中添加以下行来测试这一点:

System.out.println("in [METHOD NAME]: " + Thread.currentThread().getName());

并将[METHOD NAME]替换为实际的方法名称。