我想在另一个方法中运行一行代码。具体来说,我想采用一行代码 x 并在新线程中运行它。
这是我的伪代码
LineOfCode line;
...
new NewThread(line).run()
这是NewThread
类
public class NewThread {
LineOfCode line;
NewThread(LineOfCode line){
this.line = line;
}
public void run(){
Thread thread = new Thread() {
@Override
public void run() {
line.execute();
}
};
thread.start();
}
}
如何将一行代码抽象为变量?
可能是一个愚蠢的问题,但无法想到明显的解决方案。
答案 0 :(得分:4)
在Java 8+中,您可以使用lambda expression:
Runnable line = () -> { System.out.println("I am doing something"); };
(感谢JoopEggen在评论中提供此内容)。
在以前的版本中,您需要明确地创建Runnable
:
Runnable line = new Runnable() {
@Override public void run() {
System.out.println("I am doing something");
}
};
您可以将其传递给MyThread
,然后调用run()
方法。
实际上,您根本不需要MyThread
:您可以这样做:
new Thread(line).start();
它运行Runnable:这是创建新线程的首选方式(而不是直接子类化)。