为什么要只用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的更多相关文章

  1. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  2. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  3. 分享篇——我的Java学习路线

    虽然之前我是开发出身,但是我学习的语言是Objective-c,这个语言使用起来范围比较窄,对于自动化学习来说也是无用武之地,所以我自己学习了Java,对于一个有开发经验的人来说学习一门新语言相对来说 ...

  4. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

  5. Java学习心得之 HttpClient的GET和POST请求

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 HttpClient的GET和POST请求 1. 前言2. GET请求3 ...

  6. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  7. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  8. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  9. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

随机推荐

  1. Linux 环境下安装 Nexus 私服存储库

    镜像下载.域名解析.时间同步请点击阿里云开源镜像站 一.nexus私服存储库简介 Nexus 是一个强大的maven仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问.,还可以用来创建yum ...

  2. # Redhat7 安装 yum源

    第一步:先卸载原来的yum rpm -qa |grep yum 查看原来是否安装 yum-3.4.3-118.el7.noarch yum-utils-1.1.31-24.el7.noarch yum ...

  3. Windows服务器上搭建Windows2003+IIS+ASP.NET+MSSQL网站

    一.安装IIS服务 1. 选择"开始"→"所有程序"→"管理工具"→"管理您的服务器"菜单命令,启动"添加或删 ...

  4. Delaunay三角剖分及MATLAB实例

    https://blog.csdn.net/piaoxuezhong/article/details/68065170 一.原理部分 点集的三角剖分(Triangulation),对数值分析(如有限元 ...

  5. 【模板】动态 DP

    luogu传送门. 最近学了一下动态dp,感觉没有想象的难. 动态DP simple的DP是这样的: 给棵树,每个点给个权值,求一下最大权独立集. 动态DP是这样的: 给棵树,每个点给个权值还到处改, ...

  6. Java 实现汇总排序

    排序在系统中经常能用到,一般可以在数据库做排序,也可以在服务端做排序.在数据库一般使用 order by 排序.而服务端也是使用快排.本期使用汇总排序. 问题 统计销售数据,每个销售员都有对应的部门和 ...

  7. oracle 跨分区查询效率,Oracle分区表做跨分区查询

    问:有一张大表,其中按时间字段(TIME_ID)进行表分区(按季度分区),但是如果业务人员做跨季度的大批量数据的查询时,未能走TIME_ID分区索引,导致全表扫描.此种情况该如何处理? 示例解析: 1 ...

  8. Zookeeper 对节点的 watch监听通知是永久的吗?为什么 不是永久的?

    不是.官方声明:一个 Watch 事件是一个一次性的触发器,当被设置了 Watch 的数据发生了改变的时候,则服务器将这个改变发送给设置了 Watch 的客户端, 以便通知它们. 为什么不是永久的,举 ...

  9. 什么是持续集成CI?

    持续集成(CI)是每次团队成员提交版本控制更改时自动构建和测试代码的过程. 这鼓励开发人员通过在每个小任务完成后将更改合并到共享版本控制存储库来共 享代码和单元测试.

  10. 介绍一下 WebApplicationContext?

    WebApplicationContext 是 ApplicationContext 的扩展.它具有 Web 应用 程序所需的一些额外功能.它与普通的 ApplicationContext 在解析主题 ...