1 public class Test{
2 public synchronized void test1(){
3 System.out.println("test1 start...........");
4 try {
5 TimeUnit.SECONDS.sleep(1);
6 } catch (InterruptedException e) {
7 e.printStackTrace();
8 }
9 System.out.println("test1 end...........");
10 }
11
12 public static void main(String[] args) {
13 Test t = new Test();
14 new Thread(()->t.test1()).start();
15 }
16 }
上面这个lamda表达式其实是方法体中只有一条 t.test1() 语句所以省略{ }的写法,易懂的的写法是
new Thread(()->{
t.test1();
}).start();
lamda表达式还有一种::双冒号的写法,这个写法可以省略要重写的方法的参数和箭头,即上面的()->
冒号左边放对象,右边放你要调用的方法名,不带参数,上面的lamda表达式也可以改成双冒号的形式
new Thread(t::test1).start();
如果重写的方法的方法体中不是调用方法或者还需要写其他语句,那应该就不能用这种方式了