问题描述
|
在Java中运行单独的线程,我们必须实现Runnable接口或扩展Thread类,因此实际上只有方法Run()可以用于启动新线程。
在C#中,我们可以使用以下方法调用任何方法以作为新线程运行
新线程(目标函数);
因此实际上,在Java中,我们最终为函数创建了一个单独的类,使其能够作为线程运行。
那么有办法避免这种情况吗?
我想避免架构上的任何更改,并且方法本身不是很冗长,它只有两个循环,这很耗时。
解决方法
就我的Java知识而言:运行线程的唯一方法是通过提供的任何方法(例如您命名的方法)调用run()。
但是,您可以只在运行中对您的方法进行调用。这样一来,您就不会对架构进行太多更改。
, 虽然并不完美,但是您可以使用匿名内部类来包装函数。在单独的线程上执行函数的代码如下所示:
Thread t = new Thread () {
public void run()
{
myMethodHere();
}
};
t.start();
, 在Java中,函数(甚至更好的方法)本身不是对象,因此,您必须创建这样的包装器才能执行所需的操作。
new Thread() {
public void run() {
originalMethod();
}
}.start();
, 您可以创建一个使用反射来实现的辅助方法
backgroundMethod(\"methodName\");
要么
backgroundMethod(object,\"methodName\");
除非您经常这样做,否则使用其他人建议的Runnable可能会更好/更清晰。