相关疑难解决方法(0)

Java的lambda语法有什么细分?

请解释Java 8的lambda方法的语法.

有很多解释了那里什么拉姆达功能,但我找不到语法的详尽的解释,而我发现很难学会正确复制的语法,因为我不明白为什么他们"按原样重写.

这是我遇到的一个常见案例,由NetBeans提供:

public static void main(String[] args) {
    SwingUtilities.invokeLater(() -> {
        new MainAppJFrame();
    });
}
Run Code Online (Sandbox Code Playgroud)

所以,不知何故,以下lambda表达式正在解析为匿名Runnable对象的run()方法:

() -> {
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

->是lambda语法,对吧?花括号只是包含匿名方法代码.括号是否为空参数,因为在这种情况下我们正在创建一个Runnable.run()方法?

这一点对我来说都不太清楚.我假设编译器知道Runnable根据SwingUtilities.invokeLater(Runnable)方法预期的类型实例化匿名?如果有两种SwingUtilities.invokeLater方法仅在参数列表中有所不同,会发生什么?显然在这个特定情况下没有,但在其他地方可能:

interface ExampleLambdaConsumer {
    public void doSomething(Runnable r);
    public void doSomething(java.lang.reflect.Method m);
}

class C implements ExampleLambdaConsumer {
    // implementations for doSomething methods here

    public static void main(String[] args) {
        doSomething(() -> {
            // lambda method body here …
Run Code Online (Sandbox Code Playgroud)

java syntax lambda java-8

35
推荐指数
3
解决办法
7277
查看次数

java 8的多线程示例

我需要一个Java 8的多线程示例.

我需要能够手动选择线程数.

在下面的示例中,我遇到Thread.currentThread().getName()的问题,我需要使用lambda表达式.

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Thread {

    public static void main(String args[]) {
       ExecutorService service = Executors.newFixedThreadPool(10);
       for (int i =0; i<100; i++){
           service.submit(new Task(i));
       }
    }

final class Task implements Runnable{
    private int taskId;

    public Task(int id){
        this.taskId = id;
    }

    @Override
    public void run() {
        System.out.println("Task ID : " + this.taskId +" performed by "
            + Thread.currentThread().getName());
    }
}
Run Code Online (Sandbox Code Playgroud)

java lambda multithreading

3
推荐指数
2
解决办法
2万
查看次数

关闭钩子中的Java 8和lambdas

声纳提到,这个java代码应该与lambda一起使用,但我从未使用过lamdas,也不知道如何使用它.有人能指出我这个代码的正确版本:?

Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {

    @Override
    public void run() {
        closeable.close();
        logger.info("Close closeable.");
        executorPool.shutdown();
        logger.info("Shutdown executorPool");
    }
}));
Run Code Online (Sandbox Code Playgroud)

java lambda java-8

0
推荐指数
1
解决办法
5792
查看次数

标签 统计

java ×3

lambda ×3

java-8 ×2

multithreading ×1

syntax ×1