ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java之多线程内部概念

2021-11-30 20:59:20  阅读:194  来源: 互联网

标签:lamda Java void System 概念 println 多线程 public out


  • 静态代理模式

总结:

真实对象和代理对象都要实现同一个接口

代理对象要代理真实角色(传递一个真实角色类型的实参)

好处:代理对象可以做很多真实对象做不了的事情

        真实对象专注做自己的事情

实现方法类似多线程new Thread(...).start();

package 静态代理;

public class StaticProxy{
    public static void main(String[] args) {
//       Wedding wedding = new Wedding(new You());
//       wedding.HappyMarry();
         new Wedding(new You()).HappyMarry();//与上述等价
    }
}
interface Marry{
    void HappyMarry();
}
//真实角色,我去结婚
class You implements Marry{
    @Override
    public void HappyMarry() {
        System.out.println("我要结婚了");
    }
}
//代理角色,帮助我结婚
class Wedding implements Marry{
    private Marry target;//代理真实角色
    public Wedding(Marry target){
        this.target = target;
    }
    @Override
    public void HappyMarry() {
        after();
        this.target.HappyMarry();//真实对象
        before();
    }
    private void before() {
        System.out.println("结婚之后,收尾款");
    }
    private void after() {
        System.out.println("结婚之前,布置现场");
    }
}
/*
结婚之前,布置现场
我要结婚了
结婚之后,收尾款
*/
  • Lamda表达式

 主要作用为简化程序,避免匿名内部类定义过多,去掉没有意义的代码,只留下核心的逻辑

函数式接口的定义:任何接口,若只包含唯一一个抽象方法,那么他就是函数式接口。

package Lamda;
/*
推导Lamda表达式
*/
public class TestLamda1 {
    //3.静态内部类
    static class Like2 implements ILike{
        @Override
        public void lamda() {
            System.out.println("I like lamda2");
        }
    }
    public static void main(String[] args) {
        new Like().lamda();
        Like2 like2 = new Like2();
        like2.lamda();
        //4.局部内部类
        class Like3 implements ILike{
            @Override
            public void lamda() {
                System.out.println("I like lamda3");
            }
        }
        Like3 like3 = new Like3();
        like3.lamda();
        //5.匿名内部类,没有类的名称,必须借助接口或者父类
        new ILike(){
            @Override
            public void lamda() {
                System.out.println("I like lamda4");
            }
        }.lamda();
        //6.用Lamda简化 必须要函数式接口才能实现
        ILike iLike = new Like();
        iLike = ()->{
            System.out.println("I like lamda5");
        };
        iLike.lamda();
    }
}
//1.定义函数式接口
interface ILike{
    void lamda();
}
//2.实现类
class Like implements ILike{
    @Override
    public void lamda() {
        System.out.println("I like lamda");
    }
}
/*I like lamda
  I like lamda2
  I like lamda3
  I like lamda4
  I like lamda5*/
  • Lamda表达式的简化
package Lamda;

public class TestLamba2 {
    public static void main(String[] args){
        lamba ll = (int a)->{
            System.out.println("new lamda表达式" + a);
        };
        ll.l(521);
        //简化1.去掉参数类型
        ll = (a)->{
            System.out.println("Lamda简化1");
        };
        ll.l(1);
        //简化2.简化括号
        ll = a->{
            System.out.println("Lamda简化2");
        };
        ll.l(2);
        //简化3.去掉花括号
        ll = a-> System.out.println("终极简化3");
        ll.l(3);
        //总结:简化3.Lamda表达式只能有一行代码的情况下才能简化成为一行,如果有多行就用代码块包裹即带上花括号
        //接口必须是函数式
        //多参数就要带上括号
    }
}
interface lamba{
    void l(int a);
}
/*new lamda表达式521
Lamda简化1
Lamda简化2
终极简化3
*/

 

标签:lamda,Java,void,System,概念,println,多线程,public,out
来源: https://blog.csdn.net/xzc_tobehero/article/details/121616219

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有