Java 多線程 -- lambda 表達式推導


jdk 8 開始 java 引入了lambda 表達式。
lambda適用場景:
1、接口或父類
2、接口或父類只有一個方法

我們從多線程寫法來推導一下:

1、外部類寫法:

package com.xzlf.thread;
/** * Lambda 表達式推導一:外部類 * @author xzlf * */
public class LambdaTest01 {
	public static void main(String[] args) {
		ThreadA ta = new ThreadA();
		new Thread(ta).start();
	}
}

	
class ThreadA implements Runnable{
	
	@Override
	public void run() {
		System.out.println("外部類");
	}
}

運行結果:
在這里插入圖片描述

2、靜態內部類寫:

package com.xzlf.thread;
/** * Lambda 表達式推導二: 靜態內部類 * @author xzlf * */
public class LambdaTest02 {
	public static void main(String[] args) {
		ThreadA ta = new ThreadA();
		new Thread(ta).start();
	}
	
	static class ThreadA implements Runnable{
		
		@Override
		public void run() {
			System.out.println("靜態內部類");
		}
	}
}

運行結果:
在這里插入圖片描述

3、局部內部類寫法:

package com.xzlf.thread;
/** * Lambda 表達式推導三:局部內部類 * @author xzlf * */
public class LambdaTest03 {
	public static void main(String[] args) {
		class ThreadA implements Runnable{
			
			@Override
			public void run() {
				System.out.println("靜態內部類");
			}
		}
		
		ThreadA ta = new ThreadA();
		new Thread(ta).start();
	}
	
	
}

運行結果:
在這里插入圖片描述

4、匿名內部類寫法:

package com.xzlf.thread;
/** * Lambda 表達式推導四:匿名內部類 * @author xzlf * */
public class LambdaTest04 {
	public static void main(String[] args) {
		new Thread(new Runnable() {
			@Override
			public void run() {
				System.out.println("匿名內部類");
			}
		}).start();
	}
}

運行結果:
在這里插入圖片描述

5、lambda表達式:省略接口名 和 方法名

package com.xzlf.thread;
/** * Lambda 表達式推導五:lambda 表達式 :省略接口名 和 方法名 * @author xzlf * */
public class LambdaTest06 {
	public static void main(String[] args) {
		new Thread(() -> {
				System.out.println("匿名內部類");
		}).start();
	}
}

運行結果:
在這里插入圖片描述

6、lambda表達式 :省略大括號(方法內只有一行代碼):

package com.xzlf.thread;
/** * Lambda 表達式推導六:lambda 表達式 :省略大括號 * @author xzlf * */
public class LambdaTest05 {
	public static void main(String[] args) {
		new Thread(() -> System.out.println("lambda 簡化")).start();
	}
}

運行結果:
在這里插入圖片描述

7、lambda表達式帶參數寫法:

package com.xzlf.thread;
/** * Lambda 表達式推導七:lambda 表達式 :省略接口名 和 方法名 * @author xzlf * */
public class LambdaTest07 {
	public static void main(String[] args) {
		ILike like = (String name) -> {
			System.out.println("i like " + name);
			};
		like.like("lambda");	
	}
}

interface ILike{
	void like(String name);
}
	

運行結果:
在這里插入圖片描述

8、lambda表達式帶參數簡化寫法:

方法只有一個lambda會自動匹配參數類型,可以省略參數類型和大括號:

public class LambdaTest07 {
	public static void main(String[] args) {
		ILike like = (name) -> System.out.println("i like " + name);
			
		like.like("lambda");	
	}
}

interface ILike{
	void like(String name);
}

運行結果:

在這里插入圖片描述

9、lambda表達式帶參數和返回值寫法:

一樣的,方法只有一個,且方法內只有一條語句時,可以省略參數類型和大括號以及 return 關鍵字;

public class LambdaTest07 {
	public static void main(String[] args) {
		Count c = (a, b) -> a + b;
		int sum = c.add(10, 20);
		System.out.println(sum);
			
		
	}
}

interface Count{
	int add(int a, int b);
}

運行結果:
在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM