多线程理解

继承Thread类

实现Runnable接口

多个线程同时操作同一个对象

问题:多个线程操作同一个资源,可能会出现资源冲突问题

实现Callable接口

静态代理

  抽象角色:声明真实对象和代理对象的共同接口。

  代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能够代替真实对象。

  同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。

  真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。

Lamda表达式

学习前提:

为什么使用

理解函数式接口

定义:只包含唯一一个抽象方法的接口,如:

public interface Runnable{
 public abstract void run();
}

对于函数式接口,我们可以通过lamda表达式来创建该接口的对象。

推导逻辑:

package JavaText.Text;
​
public class LamdaTest {
 //3.静态内部类
 static class like2 implements ILike{
   public void lamda(){
     System.out.println("I like lamda2");
    }
  }
​
​
 public static void main(String[] args) {
   ILike like = new like();
   like.lamda();
​
   like2 like2=new like2();
   like2.lamda();
​
   //4.局部内部类
   class like3 implements ILike{
     public void lamda(){
       System.out.println("I like lamda3");
      }
    }
   like = new like3();
   like.lamda();
​
   //5.匿名内部类,没有类的名称,必须借助接口或父类
   like =new ILike(){
     @Override
     public void lamda(){
       System.out.println("I like lamda4");
      }
    };
   like.lamda();
​
   //6.lamda表达式
   like=()->{
     System.out.println("I like lamda5");
    };
   like.lamda();
​
​
​
  }
}
//1.定义一个函数式接口
interface ILike{
 void lamda();
}
​
//2.常用类
class like implements ILike{
 public void lamda(){
   System.out.println("I like lamda1");
  }
}
Lamda表达式其实就是省略掉那些唯一不可变的东西,如在这一段代码当中:
//5.匿名内部类,没有类的名称,必须借助接口或父类
   like =new ILike(){
     @Override
     public void lamda(){
       System.out.println("I like lamda4");
      }
    };
   like.lamda();
​
   //6.lamda表达式
   like=()->{
     System.out.println("I like lamda5");
    };
   like.lamda();
----
 new ILike(){
     @Override
     public void lamda(),括号之前的代码都是唯一不可变的,因此可以省略,而括号之后的代码是自己定义的因此保留括号以后的代码在加上->即可。
​

发表回复