如果执行以下操作,则可以将对象创建为线程并运行它。
class ThreadTest
{
public static voic main(String[] args)
{
HelloThread hello = new HelloThread();
Thread t = new Thread(hello);
t.start();
}
}
class HelloThread extends Thread
{
public void run()
{
System.out.println(" Hello ");
}
}
现在,如果我的
HelloThread
类有另一个方法调用runThisPlease()
,我们应该如何用线程运行它?例:
class HelloThread extends Thread
{
public void run()
{
System.out.println(" Hello ");
}
public void runThisPlease(String input)
{
System.out.println (" Using thread on another class method: " + input );
}
}
e:当我尝试
Thread t = new Thread(hello.runThisPlease());
时,它不起作用。那么,如何使用线程调用方法runThisPlease()
?编辑:
runThisPlease()
方法中需要的参数; 最佳答案
在Java 8中,您可以使用
Thread t = new Thread(hello::runThisPlease);
hello::runThisPlease
将通过调用Runnable
的运行方法转换为hello.runThisPlease();
。如果您要调用方法,则需要参数,例如
System.out.println
,您当然也可以使用普通的lambda表达式:final String parameter = "hello world";
Thread t = new Thread(() -> System.out.println(parameter));
如果使用的Java版本Runnable的匿名内部类(这是java8编译器的作用,AFAIK),请参见其他答案。
但是,您也可以使用扩展
Thread
的匿名内部类:final HelloThread hello = //...
Thread t = new Thread() {
@Override
public void run() {
hello.runThisPlease();
}
};