首页 > 其他分享 >【lamda表达式】在多线程开发中的lamda表达书简化参数

【lamda表达式】在多线程开发中的lamda表达书简化参数

时间:2024-07-24 15:54:32浏览次数:14  
标签:lamda handle void 线程 executor new 多线程 public 表达式

创建线程后传Runnable参数并实现run方法,可以采用下面两种方式,效果是一样的

 Thread t1 = new Thread(new Runnable() {
        @Override
        public void run() {
            // 这里是线程应该执行的代码
            System.out.println("Hello, World!");
        }
    });

    //上面代码t1的简化写法如下  见thread2创建
    Thread thread2 = new Thread(() -> {
        System.out.println("Hello, World!");
    });

   

对于线程池中提交任务代码,也可以这样简化:可以采用下面两种方式,效果是一样的


public class ThreadPoolTest {
    //线程池
    static final ThreadPoolExecutor executor = new ThreadPoolExecutor(9, 16, 60L,
            TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(), Executors.defaultThreadFactory());


    public static void main(String[] args) {
        //向线程池中提交10个任务,
        for (int i = 0; i < 4; i++) {
            executor.execute(new Runnable() {
                @Override
                public void run() {
                    handle();
                }
            });

        }
    }

    private static void handle() {
    }
}

简化后:

public class ThreadPoolTest {
    //线程池
    static final ThreadPoolExecutor executor = new ThreadPoolExecutor(9, 16, 60L,
            TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(), Executors.defaultThreadFactory());


    public static void main(String[] args) {
        //向线程池中提交10个任务,
        for (int i = 0; i < 4; i++) {
            executor.execute(() -> handle());

        }
    }

    private static void handle() {
    }
}

很明显其中的 executor.execute()中传的参数还是Runnable类型,只不过这个类型参数中的run方法中只有一行调用handle()方法的代码,所以简化完之后就变成了 executor.execute(() -> handle()); 这个还需要多多使用,慢慢就熟练了。

标签:lamda,handle,void,线程,executor,new,多线程,public,表达式
From: https://blog.csdn.net/qq_39666711/article/details/140665420

相关文章

  • c#写一个WINFORM的多线程操作
    以下是一个简单的示例,展示了如何在C#WinForms中创建一个按钮的异步事件,并使用Label控件来显示事件执行的时长。首先,确保你已经在你的项目中添加了一个Button和一个Label控件。假设按钮的名称是btnAsync,标签的名称是lblDuration。然后,在你的Form类中,添加以下代码:csha......
  • python_进程与线程_多线程
    一、程序与进程的概念1、进程:指启动后的程序,系统会为进程分配内存空间二、创建进程的方式1、第一种创建进程的方式process(group=None,target,name,args,kwargs)group:表示分组,实际上不使用,默认为None即可target:表示子进程要执行的任务,支持函数名name:表示子进程的......
  • 使用正则表达式和 Polars 有效解析公式
    我正在尝试解析一系列数学公式,并且需要使用Python中的Polars有效地提取变量名称。Polars中的正则表达式支持似乎很有限,特别是对于环视断言。有没有一种简单、有效的方法来解析公式中的符号?这是我的代码片段:importreimportpolarsaspl#Definetheregexpatte......
  • 【Python正则表达式】:文本解析与模式匹配
    文章目录1.正则表达式2.re模块3.修饰符3.元字符3-1字符匹配元字符3-2重复次数限定元字符3-3字符集合匹配元字符3-4分组元字符3-5边界匹配元字符3-6字符类别匹配元字符4.技巧4-1贪婪与非贪婪5.案例1.正则表达式正则表达式面向什么样的问题?1、判断一个字......
  • 正则表达式
    https://www.jianshu.com/p/3dd137ba2875?utm_campaign=maleskine&utm_content=note&utm_medium=seo_noteshttps://blog.csdn.net/lovedingd/article/details/128249121#匹配0-100之间数字re.match("[1-9]?\d$|100","08")#匹配邮箱163/126/qqre.......
  • 深入理解Java内存模型及其在多线程编程中的应用
    深入理解Java内存模型及其在多线程编程中的应用大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来深入探讨Java内存模型(JavaMemoryModel,JMM)及其在多线程编程中的应用。一、Java内存模型概述Java内存模型(JMM)是Java虚拟机规范的一部分,定义了变......
  • 【数字IC】——GVIM正则表达式
    1、正则表达式概述正则表达式(RegularExpression,regex/regexp)是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的,用于描述要匹配的文本模式。GVIM、TCL中都会使用到正则表达式,其中TCL中的使用方法已在之前介绍过,大家可以参考我这篇博客【数字IC-TCL语言......
  • Python的运算符与条件表达式
    一、运算符Python数据是通过使用运算符来进行操作的,与数学运算符类似,主要运用于数字计算,比较大小和逻辑运算。Python中的运算符主要包括算术运算符、赋值运算符、比较运算符、逻辑运算符和位运算符。1.算术运算符算术运算符用在数字表达式中,作用和在数学中是一样的。Python......
  • C++多线程并发基础入门教程
    C++多线程并发基础入门教程《C++ConcurrencyinAction,SecondEdition》这本书深入浅出的讲解了C++多线程知识;如果英文水平足够好,可以查阅英文原版,它也有中文译本,虽然翻译过来的质量不如原版,但英文原版阅读太费精力;我推荐新手或者有一定经验的人看这本书。1什么是C++多......
  • PHP 多线程和异步编程的常见陷阱
    本文由ChatMoney团队出品在PHP开发中,多线程和异步编程是提高应用性能和响应速度的重要手段。然而,这些技术也带来了许多挑战和陷阱,如共享状态冲突、死锁、超时、资源泄漏以及调试困难等。本文将详细探讨这些陷阱,并提供相应的解决方案和代码示例。共享状态冲突在多线程环......