借多线程初识Lambda

lambda表达式,作为Java8中的新特性,可以极大地简化原本复杂的代码,再加上其接近自然语言,比较容易理解。(来自百度,容易理解这点实在不敢恭维)
作为一个Java初学小菜鸟,第一次接触lambda是在《Java核心技术卷I》里面,当初可谓一脸懵逼,根本不知道从何入手。借着这次对多线程的学习,对lambda也开始有一定的了解,赶紧做点自己的小笔记。

面向对象和函数式

要理解lambda表达式,首先要了解函数式编程。Java是一门面向对象的语言,因此我们遇到问题时第一时间想到的就是需要合适的对象,利用他们其中合适的方法来解决。而所谓函数式编程,则是避免使用依赖程序状态和对象的方法来解决问题,个人理解是,类似于数学的函数,不管什么情况下,都只要代入数据计算就好。函数式编程往往会忽略面向对象的复杂语法,强调的是做什么,而不是以什么形式去做。

冗余的Runnable代码

要建立多线程,我们可以先写一个实现了Runnable接口的实现类,覆盖其run方法,然后创建线程类并传入Runnable类的实例,利用start方法开启多线程。

//实现了Runnable接口并覆盖其方法的实现类
public class Runnable01  implements Runnable{
	public  void run() {
		System.out.println(Thread.currentThread().getName()+"建立了新线程");
	}
}
//创建新线程并传入该类实例
public class DemoRunnable {
	public static void main(String[] args) {		
	        //创建Runnable接口的实现类对象
			Runnable01 r=new Runnable01();
			//创建新线程,传入Runnable接口的实现类
			Thread t=new Thread(r);
			//调用start方法开启新线程,实现新方法
			t.start();
}

代码的简化

这时候我们可以看到,创建一个新线程的代码还是比较复杂的,需要我们去创建实现两个类,那有没有办法减少我们的工作量呢?答案是使用匿名内部类。直接在新建立的线程中传入Runnable接口并覆盖run方法,并以start方法来启动多线程。

//使用匿名内部类的方法,实现多线程
new Thread(new Runnable() {
	public  void run() {
		System.out.println(Thread.currentThread().getName()+"建立了新线程");
	}
}).start();;

其实还有更简便的方法,就是使用Lambda表达式来实现。在这里,新建线程括号中的小括号,代表着run方法,如果该方法有参数,我们就要在这个小括号里面加上参数,箭头的含义是把前面小括号里的参数传到后面大括号的数据里去,而大括号中的代码,其实就是run方法的主体

//使用lambda表达式
new Thread(()-> {
	System.out.println(Thread.currentThread().getName()+"建立了新线程");
}).start();;

总结

刚开始接触Lambda表达式,总会不可避免地懵圈,关键在于,如何转变你的编程思想,由面向对象转向函数式编程,这两种编程思想有着各自的优劣,我们应该取其精华,用最简单的方式来解决问题。lambda表达式作为Java1.8的新特性,有利于减少我们代码的冗余度,也增加了代码的可读性,我们应当好好掌握。以上是在B站观看黑马视频有感。
如果以上感想中有什么不当之处,还望各位不吝指出,多谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值