是否有另一种方法可以在创建对象时(调用构造函数时)启动线程。我知道你不能在构造函数中启动线程。但是,如果我在实现 Runnable 的类(类称为 Tasks)中有两个方法:run()、continuousRecv()。 run() 方法调用 continuousRecv() 函数。 continuousRecv() 做了一些事情。然后我在公共(public)类任务中创建一个名为 startContRecv() 的私有(private)类,并在构造函数调用中启动线程,就像这样
Thread t1 = new Thread(new Tasks());
t1.start();
我的代码:
import java.lang.Runnable;
public class Tasks implements Runnable {
public Tasks() {
startContinousReceive conRecv = new startContinousReceive();
}
public void continuiousReceive() {
while (true) {
//Code to executed
}
}
public void run() {
continuiousReceive();
}
//PRIVATE CLASS WHICH STARTS THREAD
//INSTANCE OF PRIVATE CLASS IS MADE IN CONSTRUCTOR OF TASKS CLASS
private class startContinousReceive {
public startContinousReceive() {
Thread t1 = new Thread(new Tasks());
t1.start();
}
}
}
最佳答案
您将得到一个实例化 Tasks 对象的无限循环,这肯定会以 OutOfMemoryError 结束。您实例化任务的 object1,它又实例化您的私有(private)类,私有(private)类再次实例化任务的另一个对象 2,然后循环重新开始。
关于Java:启动线程(替代在构造函数中启动),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31229692/