对象留在线程中

时间:2015-09-13 06:18:05

标签: java multithreading runnable

如果我创建一个新线程

Thread thread = new Thread(new myRunnableClass());
thread.start();

并在线程内我做

new mySecondRunnableClass().run();

第二个runnable类现在是否会在第一个线程中运行?

2 个答案:

答案 0 :(得分:1)

new mySecondRunnableClass().run();

您只是在创建Runnable个实例的新实例并在其上调用run()。它将在同一个线程中执行,即Thread thread = new Thread(new myRunnableClass());。如果您关心的是实例内存位置,那么它总是在堆上创建,它的引用将位于thread私有堆栈上。

答案 1 :(得分:0)

  

第二个runnable类现在是否会在第一个线程中运行?

没有“内部[a]线程”这样的地方。线程没有内部或外部。而且,特别是在Java中,线程甚至没有父线程或子线程。

主题就是。

如果你的程序的主线程启动一个新线程,那么你的程序将有两个线程,并且这两个线程在各方面都是 peers 。两个人都不拥有对方,也没有人控制对方。

它们之间唯一的特殊关系是主线程必须知道新线程(因为主要线程启动了它),但是新线程不一定知道主线程。是否实际 知道主线程完全取决于你。

如果第二个线程启动第三个线程......相同的交易。现在你的程序有三个线程,它们都是同行。