在子线程中执行主线程方法
Posted
技术标签:
【中文标题】在子线程中执行主线程方法【英文标题】:Execute main thread method in child thread 【发布时间】:2012-07-12 03:35:33 【问题描述】:我有一个名为 Test Example 的类,它有一个名为 dance() 的方法。在主线程中,如果我在子线程中调用 dance() 方法,会发生什么?我的意思是,该方法会在子线程还是主线程中执行?
public class TestExample
public static void main(String[] args)
final TestExample test = new TestExample();
new Thread(new Runnable()
@Override
public void run()
System.out.println("Hi Child Thread");
test.dance();
).start();
public void dance()
System.out.println("Hi Main thraed");
【问题讨论】:
尝试将System.out.format("thread: %s\n", Thread.currentThread().getName());
放入main
和run
。你会得到你的答案。
【参考方案1】:
试试这个...
1.方法dance属于TestExample类,不属于主线程。
2. 每当启动 java 应用程序时,JVM 都会创建一个主线程,并将 main() 方法位于堆栈底部,使其成为入口点,但如果您正在创建另一个线程并调用一个方法,那么它会在新创建的线程内运行。
3.它是执行 dance() 方法的子线程。
看下面这个例子,我用过Thread.currentThread().getName()
public class TestExample
public static void main(String[] args)
final TestExample test = new TestExample();
Thread t = new Thread(new Runnable()
@Override
public void run()
System.out.println(Thread.currentThread().getName());
test.dance();
);
t.setName("Child Thread");
t.start();
public void dance()
System.out.println(Thread.currentThread().getName());
【讨论】:
【参考方案2】:它将在子线程中执行。当你编写一个方法时,它属于一个类而不是一个特定的线程。
【讨论】:
以上是关于在子线程中执行主线程方法的主要内容,如果未能解决你的问题,请参考以下文章