람다식 인터페이스, 쓰레드 구현하는 방법

728x90
//		인터페이스 구현을 syso로 구현, 우리가 필요한 값은 msg값 밖에 없으므로 msg ->를 해줘서 간편화시킴
		myInterface mi = msg-> System.out.println(msg);
		mi.println("람다식");
		
//		static test의 msg값을 test로 주고 인터페이스를 mi로 줘서 인터페이스를 구현
		test("test", mi);
		
//		msg값을 람다식으로 넣고 인터페이스가 그 msg를 사용함으로써 msg가 출력이 됨
		test("람다식 tes", msg -> System.err.println(msg));
//		파라미터가 여러개가 있으면 (msg, msg2)를 써서 표현하고

//		문장이 여러문장이 있으면 {syso(); syso()}로 표현한다.
		test("람다식 문장 여러개", msg -> {
			System.err.println("1문장");
			System.err.println("2문장");
			System.err.println("3문장");
			//return msg; 값 사용하면 됨, 만약 return값이 있을 시!!
		});
		
		Thread t = new threadtest();
		Thread t2 = new Thread(new threadtest2());
//		t.start();
//		t2.start();
		
//		람다식으로 runnable 쓰레드 구현하기
		threadTest(()->{
			while(true) {
				System.out.println(new Date());
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		});
		
		int[] arr = {1,2,3};
		int a = 0;
		arr을 받아서 인터페이스의 interfaceArr에 넣은다음에 아래 메서드를 구현
		sumInt(arr, interfaceArr -> {
			int a = 0;
			for(int i = 0; i<arr.length; i++) {
				a+=arr[i];
			}
			System.out.println(a);
				
		});
		
		int[] arr2 = {3, 2};
		summax(arr2, maxarr -> {
			int a = 0;
			for(int i = 1; i<arr2.length; i++) {
				a = maxarr[i-1]>maxarr[i] ? maxarr[i-1] : maxarr[i];
			}
			System.out.println(a);
		});
		
		
	}
//		람다식 연습
		static void test(String msg, myInterface mi) {
			mi.println(msg);
			
			
	}
//		람다식 연습 2 = arr에 저장된 정수의 합을 출력
		static void sumInt(int[] arr, suminterface in) {
			in.sum(arr);
		}
//		람다식 연습 2 = arr에 저장된 정수의 최대값을 출력
		static void summax(int[] arr2, maxinterface in2) {
			in2.max(arr2);
		}
		
//		람다식으로 runnable 쓰레드 구현하기
		static void threadTest(Runnable r) {
			
			new Thread(r).start();
		}
	}
728x90