在 Java 的 runnable 中调用 Runnable 会发生什么?
What's happen when call a Runnable in a runnable in Java?
我得到了一个 class:
public class RunnableImplA implements Runnable {
private Runnable runnableB;
public RunnableImplA(Runnable runnableB) {
super();
runnableB= runnableB;
}
@Override
public void run() {
try {
runnableB.run();
} finally {
// some code
}
}
}
在同一线程上执行 RunnableImplA
& runnableB
运行?
Runnable.run() 不创建线程。这只是一个简单的函数调用,没有什么特别的事情发生。所以,是的,同一个线程。
为了创建新线程,您需要调用 Thread
class 的 start()
方法,它在内部调用 run()
方法。因为这里我们不使用 start 方法调用它,它就像对象上的任何其他方法调用一样。所以是的,它将在同一个线程中。
如果你想运行它在不同的线程,那么run()
方法需要更新如下:
@Override
public void run() {
try {
Thread innerThread = new Thread(runnableB);
innerThread.start();
} finally {
// some code
}
}
是的,运行 在同一线程中。
Runnable只是一个接口,没有别的。某些 类 像 Thread 可以接受 Runnable 作为参数。
我得到了一个 class:
public class RunnableImplA implements Runnable {
private Runnable runnableB;
public RunnableImplA(Runnable runnableB) {
super();
runnableB= runnableB;
}
@Override
public void run() {
try {
runnableB.run();
} finally {
// some code
}
}
}
在同一线程上执行 RunnableImplA
& runnableB
运行?
Runnable.run() 不创建线程。这只是一个简单的函数调用,没有什么特别的事情发生。所以,是的,同一个线程。
为了创建新线程,您需要调用 Thread
class 的 start()
方法,它在内部调用 run()
方法。因为这里我们不使用 start 方法调用它,它就像对象上的任何其他方法调用一样。所以是的,它将在同一个线程中。
如果你想运行它在不同的线程,那么run()
方法需要更新如下:
@Override
public void run() {
try {
Thread innerThread = new Thread(runnableB);
innerThread.start();
} finally {
// some code
}
}
是的,运行 在同一线程中。
Runnable只是一个接口,没有别的。某些 类 像 Thread 可以接受 Runnable 作为参数。