Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
断点在Java中的lambda表达式中不起作用_Java_Multithreading_Lambda - Fatal编程技术网

断点在Java中的lambda表达式中不起作用

断点在Java中的lambda表达式中不起作用,java,multithreading,lambda,Java,Multithreading,Lambda,我无法理解以下代码的作用: public class Main { public static void main(String[] args) throws UnsupportedProtocolException, IOException { new Thread(() -> { PropertiesLoader loader = new PropertiesLoader(); loader.load(args)

我无法理解以下代码的作用:

public class Main {

    public static void main(String[] args) throws UnsupportedProtocolException, IOException {
        new Thread(() -> {
            PropertiesLoader loader = new PropertiesLoader();
            loader.load(args);
            System.out.println(loader.getProperties());
        });
    }
}
我在main方法的所有行中都设置了断点,但只有以
new Thread
开头的行中的断点被命中

但是,lambda表达式主体中没有断点被命中

另外,我不明白这段代码的作用。AFAIU,lambda表达式不返回任何值。因此,代码不向
线程
构造函数提供任何参数

另外,我不明白为什么这里会有线程创建


您可以帮助我如何使用断点访问lambda表达式内部吗?

lambda内部没有断点的原因是lambda从未运行过


lambda不带参数,返回类型为void,与函数接口
java.lang.Runnable
匹配(因为它有一个方法
void run()
)。调用构造函数
java.lang.Thread(java.lang.Runnable)
来构造一个新线程,但是该线程上从未调用过
start()
,因此lambda永远不会运行。

顺便说一句,这将只创建一个新线程,对吗?因此,你能解释一下为什么作者决定把动作放在一个线程中,而不是简单地按顺序执行吗?@Utku你是对的,只创建了一个新线程。由于代码不起作用,作者可能不知道他们在做什么,或者将线程传递给其他类来启动它,但我不确定,因为我不知道整个上下文。
() -> {
        PropertiesLoader loader = new PropertiesLoader();
        loader.load(args);
        System.out.println(loader.getProperties());
    }