有一个疑问,就是,为什么线程的开启长下面这样。
1
| new Thread(() -> System.out.println(1)).start();
|
有这样一个场景。
你去饭店吃饭,会有厨师给你做菜,本来你不去饭店,是你自己做饭,但是,你去饭店,是厨师给你做饭,你付钱。
这是不是相当于厨师代理你做了饭。
写成代码如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| package com.example.blog;
import lombok.SneakyThrows;
import java.util.concurrent.*;
interface Cook { void cook(); }
class Customer implements Cook { @Override public void cook() { System.out.println("客户吃饭"); } }
class Chef implements Cook {
public Cook target;
public Chef(Cook cook) { target = cook; }
@Override public void cook() { before(); target.cook(); }
private void before() { System.out.println("客户下单"); } }
public class T { public static void main(String[] args){ Customer customer = new Customer(); new Chef(customer).cook(); new Chef(() -> System.out.println("客户吃饭")).cook(); } }
|
代码中第二种方式是不是和线程开启特别像。