Thread-線程Lambda


LambdaThread-簡化代碼

public class LambdaThread {
	static class Test implements Runnable{
		//靜態內部類
		public void run() {
			for(int i=0;i<5;i++) {
				System.out.println("靜態內部類");
			}
			System.out.println("-------------");
		}
		
	}
	public static void main(String[] args) {
		new Thread(new Test()).start();
		//局部內部類
		class Test2 implements Runnable{
			public void run() {
				for(int i=0;i<5;i++) {
					System.out.println("局部內部類");
				}
				System.out.println("-------------");
			}
		}
		new Thread(new Test2()).start();
		
		//匿名內部類
		new Thread(new Runnable(){
			public void run() {
				for(int i=0;i<5;i++) {
					System.out.println("匿名內部類");
				}
				System.out.println("-------------");
			}
		}).start();
		
		//jdk8 簡化后 lambda
		new Thread(()->{
			for(int i=0;i<5;i++)
				System.out.println("簡化后");
		}).start();
	}
}

推導Lambda

public class Lambda {
	static class Test2 implements NewLambda{
		public void lambda() {
			System.out.println("推導Lambda二:靜態內部類");
		}
	}
	public static void main(String[] args) {
		class Test3 implements NewLambda{
			public void lambda() {
				System.out.println("推導Lambda四:方法內部類");
			}
		}
		//外部類
		NewLambda nl = new Test();
		nl.lambda();
		//靜態內部類
		nl = new Test2();
		nl.lambda();
		//匿名內部類
		nl = ()->{
			System.out.println("推導Lambda三:匿名內部類");
		};
		nl.lambda();
		//方法內部類
		nl = new Test3();
		nl.lambda();
	}
}

interface NewLambda{
	void lambda();
}
class Test implements NewLambda{
	public void lambda() {
		System.out.println("推導Lambda一");
	}
}

參數

public class LambdaTest1 {
	public static void main(String[] args) {
		Person p = (String name)->{
			System.out.println(name);
		};
		p.data("張三");
		//簡化
		p = (name)->System.out.println(name);
		p.data("李四");
		
		p = name->System.out.println(name);
		p.data("王五");
	}
}
interface Person{
	void data(String name);
}

參數 + 返回值

public class LambdaTest2 {
	public static void main(String[] args) {
		Calculator c = (int a,int b)->{
			return a+b;
		};
		System.out.println(c.add(5, 3));
		
		c = (a,b)->{
			return a+b;
		};
		System.out.println(c.add(10, 4));
		
		c = (a,b)->a+b;
		System.out.println(c.add(20, 10));
	}
}

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

案例:簡化Thread

public class LambdaTest3 {
	public static void main(String[] args) {
		new Thread(()->{
			for(int i=0;i<5;i++)
			System.out.println("學習lambda");
		}).start();
		
		new Thread(()->System.out.println("實現簡化線程")).start();
	}
}


免責聲明!

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



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