如果我创建一个新线程
Thread thread = new Thread(new myRunnableClass());
thread.start();
并在线程内我做
new mySecondRunnableClass().run();
第二个runnable类现在是否会在第一个线程中运行?
答案 0 :(得分:1)
new mySecondRunnableClass().run();
您只是在创建Runnable
个实例的新实例并在其上调用run()
。它将在同一个线程中执行,即Thread thread = new Thread(new myRunnableClass());
。如果您关心的是实例内存位置,那么它总是在堆上创建,它的引用将位于thread
私有堆栈上。
答案 1 :(得分:0)
第二个runnable类现在是否会在第一个线程中运行?
没有“内部[a]线程”这样的地方。线程没有内部或外部。而且,特别是在Java中,线程甚至没有父线程或子线程。
主题就是。
如果你的程序的主线程启动一个新线程,那么你的程序将有两个线程,并且这两个线程在各方面都是 peers 。两个人都不拥有对方,也没有人控制对方。
它们之间唯一的特殊关系是主线程必须知道新线程(因为主要线程启动了它),但是新线程不一定知道主线程。是否实际 知道主线程完全取决于你。
如果第二个线程启动第三个线程......相同的交易。现在你的程序有三个线程,它们都是同行。