lambda表达式
package org.example;
//lambda表达式
/*
* 避免匿名内部类定义过多
* 函数式编程
* 函数式接口:
* 任何接口,如果只包含唯一抽象方法,那么它就是一个函数式接口
* 对于函数式接口,可以采用lambda表达式创建该接口的对象*/
public class Thread06 {
public static void main(String[] args) {
class Love2 implements ILove{
@Override
public void love(int a) {
System.out.println(2+a);
}
}
ILove iLove = new Love();
iLove.love(10);
ILove iLove2 = new Love2();
iLove2.love(10);
ILove iLove3 = new Love3();
iLove3.love(10);
ILove iLove4 = new ILove(){
@Override
public void love(int a) {
System.out.println(4+a);
}
};
iLove4.love(10);
ILove iLove5 = (int a)-> {
System.out.println(5+a);
};
iLove5.love(10);
ILove iLove6 = a->System.out.println(6+a);
iLove6.love(10);
}
static class Love3 implements ILove{
@Override
public void love(int a) {
System.out.println(3+a);
}
}
}
interface ILove{
void love(int a);
}
class Love implements ILove{
@Override
public void love(int a) {
System.out.println(1+a);
}
}
代理
package org.example;
//静态代理
public class Thread05 {
public static void main(String[] args) {
You you = new You();
new WeddingCompany(you).HappyMarry();
}
}
interface Marry{
void HappyMarry();
}
class You implements Marry{
@Override
public void HappyMarry() {
System.out.println("我要结婚了,超开心");
}
}
class WeddingCompany implements Marry{
private Marry target;
public WeddingCompany(Marry target) {
this.target = target;
}
@Override
public void HappyMarry() {
before();
target.HappyMarry();
after();
}
private void before() {
System.out.println("先付定金");
}
private void after() {
System.out.println("后付尾款");
}
}
Runable接口
package org.example;
//多个线程同时操作同一个对象
//问题:多个线程操作同一个资源的情况下,线程不安全,数据紊乱
public class Thread03 implements Runnable {
private int ticket = 10;
@Override
public void run() {
while(true){
if(ticket<=0){
break;
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"第"+ticket--+"票");
}
}
public static void main(String[] args) {
Thread03 thread03 = new Thread03();
new Thread(thread03,"小明").start();
new Thread(thread03,"小li").start();
new Thread(thread03,"小wang").start();
}
}