假设我有以下线程:
public class MyThread {
public void run() {
while (true) {
// do something forever
}
}
}
然后我按如下方式实例化线程:
MyThread thread = new MyThread();
如果我现在致电
会发生什么thread.performSomeFunction()
具体来说,performSomeFunction如何与上面的无限循环交互?是否必须等待循环睡眠?或者他们都可以“同时”运行?
答案 0 :(得分:3)
如果从另一个线程调用thread.performSomeFunction()
,则不必与run()
方法中运行的无限循环竞争。在这种情况下,您的MyThread
实例被视为可以在其上调用方法的另一个对象。
请注意,在启动thread
实例之前,无限循环才会启动。
您可以通过在run()
方法和perfomrSomeFunction()
方法中添加以下行来测试这一点:
System.out.println("in [METHOD NAME]: " + Thread.currentThread().getName());
并将[METHOD NAME]
替换为实际的方法名称。