为什么要只用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. SpringBoot 如何实现异步编程,老鸟们都这么玩的!

    镜像下载.域名解析.时间同步请点击 阿里巴巴开源镜像站 首先我们来看看在Spring中为什么要使用异步编程,它能解决什么问题? 为什么要用异步框架,它解决什么问题? 在SpringBoot的日常开发中 ...

  2. First Note

    第一篇博客 入驻博客园.

  3. K8S原来如此简单(五)Metrics Server与HPA

    什么是HPA https://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autoscale/ 我们前面有通过kubectl ...

  4. VUE常见问题

    VUE常见问题 对于MVVM的理解 MVVM 是 Model-View-ViewModel 的缩写 Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑 View 代表UI 组件, ...

  5. 【编程教室】PONG - 100行代码写一个弹球游戏

    大家好,欢迎来到 Crossin的编程教室 ! 今天跟大家讲一讲:如何做游戏 游戏的主题是弹球游戏<PONG>,它是史上第一款街机游戏.因此选它作为我这个游戏开发系列的第一期主题. 游戏引 ...

  6. Windows10与Centos7双系统安装踩的坑

    1. 首先安装windows(太简单不说了) 2.然后安装Centos7(太简单不说了) 3.注意:安装完Centos7重启电脑进入系统引导项突然发现没有Windows引导项 0x06 恢复Windo ...

  7. kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?

    Kafka 分布式的单位是 partition,同一个 partition 用一个 write ahead log 组织, 所以可以保证 FIFO 的顺序.不同 partition 之间不能保证顺序. ...

  8. Java 中 Semaphore 是什么?

    Java 中的 Semaphore 是一种新的同步类,它是一个计数信号.从概念上讲,从 概念上讲,信号量维护了一个许可集合.如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可.每 ...

  9. 学习Haproxy (八)

    Unix套接字命令(Unix Socket commands) socat是一个多功能的网络工具,名字来由是"Socket CAT",可以看作是netcat的N倍加强版,socat ...

  10. resion 学习笔记

    resin是一个非常流行的web引用服务器,对servlet和jsp提供了良好的支持,自身采用java开发,支持集群,还支持PHP. resin分为普通版和专业版,主要区别是专业版支持缓存和负载均衡. ...