这个问题的意思是,如果我有一个运行某些代码的线程,并且该代码使用了一个不在线程中的方法,那么该方法也在同一个线程中运行。这是我正在谈论的代码示例。这是一个使用android的例子,但我猜这同样适用于java。
new Thread(new Runnable() {
@Override
public void run() {
//Logic
randomMethod();
}
}).start();
然后随机方法:
public void randomMethod()
{
//This method is not wrapped in a thread.
}
randomMethod()是否与调用它的线程一起运行,或者它是一个单独的线程?
答案 0 :(得分:1)
方法在调用者的上下文中运行。您始终可以使用Thread#currentThread()
检查您的主题ID,例如
// How to get the current thread id and name
Thread t = Thread.currentThread();
System.out.printf("Thread: %d - %s%n", t.getId(), t.getName());
注意:常规Java应用程序在main
线程上启动(ID为#34; 1")。
答案 1 :(得分:0)
您所指的是Java中的Anonymous class。通过这种方式,Thread实例可以访问父类中的所有方法(甚至是私有),因此您可以调用randomMethod()
,但是这个方法将在匿名类上下文中调用 - 在您的情况下 - 在单独的线程中
如此简短的回答你的问题 - 是的,方法将在一个单独的线程中运行
答案 2 :(得分:0)
“线程”一词在Java中有两个含义:线程(小t)是通过代码执行的路径。 Thread(big T)是一个Java标准库类,其中包含可用于创建和管理小线程的方法。
方法属于类。属于Thread类的方法(不计算其私有方法)正是该类的javadoc中描述的那些方法:http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html
Little-t线程调用方法,但它们不拥有它们。程序中的任何(小-t)线程原则上都可以调用程序中的任何方法。它是否真的完全取决于你。