一、静态代理

【代码示例】

 /***
* 静态代理:记录日志等,类是写好的,直接拿来用。 动态代理:随用随构建,临时抱佛脚
* 婚庆公司:代理角色,帮你搞婚庆的一切,布置房间等等
* 自己:真实角色,结婚是自己去结婚,不是婚庆公司去结婚
*
* 结婚礼仪:代理相同的接口,不管谁搞流程是确定的
*
*/
package cn.sxt.thread; public class Test_0406_StaticProxy {
public static void main(String[] args) {
new ProxyObject( new RealityObject() ).buy(); //代理对象里面传入一个真实的结婚对象
//new Thread(new Racer()).start(); 类似于这个 } }
//接口:结婚流程
interface MarryProcess{
void buy();//买东西
} class RealityObject implements MarryProcess{ public void buy() { //重写buy方法
System.out.println("自己去采买结婚物品");
} } class ProxyObject implements MarryProcess{ private MarryProcess target;//代理谁,就是放一个真实角色 public ProxyObject(MarryProcess target) {
super();
this.target = target;
} public void buy() {//重写buy方法
ready();//这里可以写登录日志呀等等
this.target.buy(); //this.target指的是真实的角色,这里的buy()是接口中的buy()方法
after();//这里可以用作释放资源呀
}
private void ready() {
System.out.println("买烟酒"); }
private void after() {
System.out.println("收拾桌子"); } }

二、lamda表达式

/**jdk8新增
* lambda表达式
* 1、避免匿名内部类定义过多
* 2、实质属于函数式编程
* 3、简化线程(一般是只用一次的线程)的使用
*
*/
package cn.sxt.thread; public class Test_0406_Lambda {
//知识点1:类放在类中,静态内部类Test01,不使用它,编译器不会编译
static class Test01 implements Runnable{
//线程入口入口点
public void run() {
for (int i = 0; i <5; i++) {
System.out.println("爱你呦!");
}
}
} public static void main(String[] args) {//主方法,代码从这里开始
//new Thread(new Test01()).start(); //new Test01()类仅用一次 //知识点2:类放在方法里边 称之为局部内部类
class Test02 implements Runnable{
//线程入口入口点
public void run() {
for (int i = 0; i <5; i++) {
System.out.println("爱你一万年!");
}
}
} new Thread(new Test02()).start();//new Test02()类仅用一次 //知识点3、匿名内部类,必须借助接口或者父类。与上边相比没有一个具体的类名
new Thread(new Runnable(){ //Runnable()是个接口不可示例化,所以加上{。。。},里边是类体,且重写run()方法
public void run() {
for (int i = 0; i<5; i++) {
System.out.println("love you ");
}
} } ).start(); //知识点4、lambda表达式,由上边3点演化过来,省去了new Runnable(){public void run()
//}和更加简化 ,仅限于里边有一个方法,本机安装的版本是jdk1.7的,不支持
/*
new Thread( ()-> {
for (int i = 0; i<5; i++) {
System.out.println("喜欢你 ");
}
} ).start();*/
}
}

[19/04/06-星期六] 多线程_静态代理(StaticProxy)和 lamda (简化代码,jdk8新增)的更多相关文章

  1. Java多线程之静态代理

    package org.study2.javabase.ThreadsDemo.staticproxy; /** * @Date:2018-09-18 静态代理 设计模式 * 1.真实角色 * 2.代 ...

  2. Java面向对象_静态代理模式

    概念:为其它对象提供一种代理以控制对这个对象的访问.代理模式说白了就是"真实对象"的代表,在访问对象时引入一定程度的间接性,因为这种间接性可以附加多种用途. public clas ...

  3. 15_AOP入门准备_静态代理模式

    [工程截图] [PersonDao.java] package com.HigginCui.daoProxy; public interface PersonDao { public void sav ...

  4. java之静态代理和动态代理

    我们以几个问题,来开始我们今天的学习,如果下面几个问题,你都能说出个一二,那么恭喜你,你已经掌握了这方面的知识.1,什么是代理模式?2,Java中,静态代理与动态代理的区别?3,Spring使用的是J ...

  5. 017 Java中的静态代理、JDK动态代理、cglib动态代理

    一.静态代理 代理模式是常用设计模式的一种,我们在软件设计时常用的代理一般是指静态代理,也就是在代码中显式指定的代理. 静态代理由业务实现类.业务代理类两部分组成.业务实现类负责实现主要的业务方法,业 ...

  6. Java代理模式精讲之静态代理,动态代理,CGLib代理

    代理(Proxy)是一种设计模式,通俗的讲就是通过别人达到自己不可告人的目的(玩笑). 如图: 代理模式的关键点是:代理对象与目标对象.代理对象是对目标对象的扩展,并会调用目标对象 这三个代理模式,就 ...

  7. 2.1多线程(java学习笔记) java中多线程的实现(附静态代理模式)

    一.多线程 首先我们要清楚程序.进程.线程的关系. 首先进程从属于程序,线程从属于进程. 程序指计算机执行操作或任务的指令集合,是一个静态的概念. 但我们实际运行程序时,并发程序因为相互制约,具有“执 ...

  8. 多线程的创建,并发,静态代理,Lambda表达式

    程序是指令和数据的有序集合,本身没有任何运行的含义.是一个静态的概念. 在操作系统中运行的程序就是进程(Process),如:QQ,播放器,游戏等等. 进程是程序的一次执行过程,是一个动态的概念,是系 ...

  9. Spring框架_代理模式(静态代理,动态代理,cglib代理)

    共性问题: 1. 服务器启动报错,什么原因? * jar包缺少.jar包冲突 1) 先检查项目中是否缺少jar包引用 2) 服务器: 检查jar包有没有发布到服务器下:                 ...

随机推荐

  1. SQL Server 2008中的MERGE(数据同步)

    OK,就像标题呈现的一样,SQL Server 2008中的MERGE语句能做很多事情,它的功能是根据源表对目标表执行插入.更新或删除操作.最典型的应用就是进行两个表的同步. 下面通过一个简单示例来演 ...

  2. ASP.NET MVC4 新手入门教程之二 ---2.添加控制器

    MVC 代表 模型-视图-控制器.MVC 是一个模式用于开发应用程序是很好的架构. 可检验性和易于维护.基于 MVC 的应用程序包含: Models: 类表示应用程序的数据并使用验证逻辑以执行这些数据 ...

  3. Springmvc file多附件上传 显示 删除操作

    之前项目需求要做一个多附件上传 并显示上传文件 带删除操作 一筹莫展之际搜到某个兄弟发的博客感觉非常好用被我copy下来了此贴算是改良版 再次感谢(忘记叫什么了时间也有点久没有历史记录了)先上图 基于 ...

  4. 快速了解RabbitMQ消息队列

    MQ 是什么?队列是什么,MQ 我们可以理解为消息队列,队列我们可以理解为管道.以管道的方式做消息传递. 场景: 1.其实我们在双11的时候,当我们凌晨大量的秒杀和抢购商品,然后去结算的时候,就会发现 ...

  5. Servlet开发(三)之ServletConfig,ServletContext

    1. ServletConfig Servlet是开发动态web的技术,而web.xml是Tomcat工程中最基础也最重要的配置文件,Tomcat启动项目的时候会加载并读取这个文件,其中web.xml ...

  6. ubuntu 16.10安装nginx

    1 : cd /usr/local 2 : sudo wget http://nginx.org/download/nginx-1.2.8.tar.gz 3 : sudo tar -zxvf ngin ...

  7. 前端使用nginx上传文件时,进度获取不对

    在使用iview时,上传文件获取进度时onUploadProgress返回数据不对. 原因是开启了nginx代理,本地上传时先传到本地nginx然后在传到服务器,导致获取进度不对 解决:在nginx的 ...

  8. CentOS/ubuntu/Solaris软件包安装

    一.CentOS/Red Hat yum = Yellow dog Updater, Modified     (1)yum配置文件      (在CentOS下,默认安装yum,无须配置即可使用) ...

  9. Vue2.0的动画效果

    本文只是结合一些代码和图片加强对Vue动画的理解,更多资料请戳这里 结合原生CSS实现动画 下面是一张图片,简单清晰明了是吧^-^ 下面是一段代码 <!DOCTYPE html> < ...

  10. windows 64位 安装mvn提示 不是内部或外部命令

    在安装mvn的过程中当在mvn的目录下去执行mvn命令的时候是可以正常执行的,当设置好环境变量后执行后发现提示mvn不是内部命令. 原因是设置的MAVEN_HOME变量未被Path解析,解决办法是 直 ...