Java 如何根据现有方法(如C#/NET)创建新线程?

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中如何在不使用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上,您需要使用匿名内部类:

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();
    }

}