Java 如何根据现有方法(如C#/NET)创建新线程?
在java中如何在不使用Runnable类或在run()方法中实现线程化代码的情况下做到这一点Java 如何根据现有方法(如C#/NET)创建新线程?,java,multithreading,Java,Multithreading,在java中如何在不使用Runnable类或在run()方法中实现线程化代码的情况下做到这一点 自Java 8以来,您可以使用Lambda: public void main () { // direct way new Thread(() -> dud()).start(); // indirect way Thread t = new Thread(() -> dud()); t.start(); } 在Java 8之前,在Java 7上
自Java 8以来,您可以使用Lambda:
public void main ()
{
// direct way
new Thread(() -> dud()).start();
// indirect way
Thread t = new Thread(() -> dud());
t.start();
}
在Java 8之前,在Java 7上,您需要使用匿名内部类:
public void main ()
{
// direct way
new Thread(new Runnable() { public void run() { dud(); } }).start();
// indirect way
Thread t = new Thread(new Runnable() { public void run () { dud(); } });
t.start();
}
我认为,如果您充分利用Java 8的功能,您可能可以隐式地实现这一点:
public class ThreadTest
{
public static void dud()
{
System.out.println("create me on a new thread");
}
public static void main(String[] args)
{
Thread t1 = new Thread(()->dud()).start();
// it might even work with a method reference :
Thread t2 = new Thread(ThreadTest::dud).start();
}
}
您基本上是使用lambda表达式隐式声明可运行的。
当然,您需要将
dud()
更改为静态,或者在调用它之前创建一个实例。您不能这样做。Java中没有这样的构造
public class ThreadTest
{
public static void dud()
{
System.out.println("create me on a new thread");
}
public static void main(String[] args)
{
Thread t1 = new Thread(()->dud()).start();
// it might even work with a method reference :
Thread t2 = new Thread(ThreadTest::dud).start();
}
}