Java学习day28
为什么要只用Lambda表达式:1.可以避免匿名内部类定义过多。2.可以让代码变简洁。3.去掉无意义代码,保留核心逻辑
函数式接口(Functional Interface)定义:1.任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口,例如Runnable接口内部只有run这一个抽象方法,它就是函数是接口。2.对于函数式接口,我们可以通过lambda表达式来创建该接口的对象
lambda表达式推导:
1 package com.Cra2iTeT.Demo01;
2
3 //lambda表达式推导
4 public class LambdaDemo {
5 //静态内部类
6 static class Like2 implements ILike {
7 @Override
8 public void lambda() {
9 System.out.println("I like lambda2");
10 }
11 }
12
13 public static void main(String[] args) {
14 //局部内部类
15 class Like3 implements ILike {
16 @Override
17 public void lambda() {
18 System.out.println("I like lambda3");
19 }
20 }
21
22 ILike like1 = new Like();
23 like1.lambda();
24
25 like1 = new Like2();
26 like1.lambda();
27
28 like1 = new Like3();
29 like1.lambda();
30
31 //匿名内部类
32 like1 = new ILike() {
33 @Override
34 public void lambda() {
35 System.out.println("I like lambda4");
36 }
37 };
38 like1.lambda();
39
40 //lambda简化
41 like1 = () -> {
42 System.out.println("I like lambda5");
43 };
44 like1.lambda();
45 }
46 }
47
48 //定义一个函数式接口
49 interface ILike {
50 void lambda();
51 }
52
53 //外部实现类
54 class Like implements ILike {
55 @Override
56 public void lambda() {
57 System.out.println("I like lambda1");
58 }
59 }
如果要停止线程,不建议使用已经废弃的stop,destroy等方法;建议添加次数限制让线程正常结束,或者使用标志位,给外部提供改变标志的方法
sleep方法可以指定当前线程阻塞的毫秒数;存在异常InterruptedException需要抛出;时间达到阻塞时间后线程进入就绪状态;sleep可以用来模拟网络延时,倒计时等等;每个对象都有一个锁,sleep不会释放锁
明天学习yield、join、线程状态观测和线程的优先级
Java学习day28的更多相关文章
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- 0035 Java学习笔记-注解
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...
- 分享篇——我的Java学习路线
虽然之前我是开发出身,但是我学习的语言是Objective-c,这个语言使用起来范围比较窄,对于自动化学习来说也是无用武之地,所以我自己学习了Java,对于一个有开发经验的人来说学习一门新语言相对来说 ...
- Java学习笔记(04)
Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...
- Java学习心得之 HttpClient的GET和POST请求
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 HttpClient的GET和POST请求 1. 前言2. GET请求3 ...
- 0032 Java学习笔记-类加载机制-初步
JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
随机推荐
- Centos7 使用Docker安装rocket.chat聊天工具
镜像下载.域名解析.时间同步请点击阿里云开源镜像站 下载安装 Rocket.Chat 目前最新的版本为 4.0.1,可以通过手动或者容器的方式安装.这里我推荐使用容器,部署过程会方便不少. 如果要用容 ...
- 阿里云开源镜像站支持IPv6访问
阿里云开源镜像站在国内企业镜像站中率先支持IPv6访问! 点击立即试用https://developer.aliyun.com/mirror/ 同时基于阿里云OpenSearch的搜索能力,开源镜像站 ...
- nginx配置只允许某个IP或某些IP进行访问
server{ listen 80; listen 443 ssl; server_name ehall.jerry.plus; ssl_certificate "****.crt" ...
- 【论文阅读】CVPR2022: Learning from all vehicles
Column: March 23, 2022 1:08 PM Last edited time: March 23, 2022 11:13 PM Sensor/组织: 现leaderboard第一名, ...
- 如何做一个网站 (C# + MVC Web+ easyUI )
如何做一个网站 小编想做一个网站,采用技术为:C# + MVC Web+ easyUI 小编经过几天的学习,以及指了几位大神指导,初见效果.建立网站的思路:先列举需要用到了几个知识点,然后逐一攻克,然 ...
- JDK API文档_1.6.0 中文版
链接:https://pan.baidu.com/s/1b0inUgYvEfjeusa3z_2p-g 密码:f8jk
- Lock 深入理解acquire和release原理源码及lock独有特性acquireInterruptibly和tryAcquireNanos
https://blog.csdn.net/sophia__yu/article/details/84313234 Lock是一个接口,通常会用ReentrantLock(可重入锁)来实现这个接口. ...
- ubuntu18.04设置开机自启Django
设置开机自启: rc-local.server [Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.l ...
- Eureka和Zookeeper区别?
(1)Eureka取CAP的AP,注重可用性,Zookeeper取CAP的CP注重一致性. (2)Zookeeper在选举期间注册服务瘫痪,虽然服务最终会恢复,但选举期间不可用. (3)eureka的 ...
- Redis 的数据类型?
Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表), set(集合)及 zsetsorted set:有序集合). 我们实际项目中比较常用的是 string,ha ...