수업노트 - 람다식, stream, thread

sanchez9·2023년 8월 24일
0

JAVA 수업노트

목록 보기
14/16

람다식(익명 메소드) - Lambda

  • javascript(arrow function → 화살표함수)
  • 메소드를 하나만 가지고 있는 인터페이스를 함수형 인터페이스라고 한다
  • 식별자(이름)없이 실행 가능한 함수 표현식
  • 익명(무명) 클래스 → 인터페이스를 구현시 구현객체를 생성하지 않고 익명클래스 이용

람다식의 장점

  • 코드를 간결하게 구성할 수 있다
    • 함수형 버전은 간결하다. 몇 줄의 코드만으로 명령형 버전과 같은 결과를 낼 수 있다.
  • 오류를 줄일 수 있다.
    • 변수의 명시적인 변경이나 재할당의 문제는 버그의 원천이 되고, 이를 동시성을 갖도록 하기에는 무척 어려운 코드가 된다.
  • 원하는 부분을 병렬화 하기 쉽다.
    • 병렬화를 구현하기는 매우 어려운 작업이다.

Stream

객체를 직렬화(Lambda) *JPA Paging 작업시 DB데이터 조회 사용

  • iterator와 비슷한 기능(개체를 병렬화 시켜서 get)
  • 람다식과 병행해서 많이 사용
  • forEach() → 객체를 순서대로 출력
    Arrays.asList(1,2,3,).stream().forEach(System.out::println)
  • 일반 배열을 ArrayList로 변환
    String[] arrStr={"a","b","c"};
    List<String> list=Arrays.asList(arrStr);
  • 예시
    Arrays.asList(1,2,3,).stream().forEach(m-> System.out.println(m) );
    				
    		    		-> 간단히   메소드 참조(::)
    Arrays.asList(1,2,3,).stream().forEach(System.out::println)
    //리스트객체의 모든 요소가 명령문(괄호안)을 실행
    리스트객체.forEach(요소->System.out.println(요소));
    
    //조금 길다 싶으면 이렇게 쓰기도 함.
    리스트객체.forEach(요소->
    				System.out.println(요소)
    );

용어정리

  • task → 작업(하나의 작업)
  • 멀티태스킹(multi-tasking) : 다중 작업
    • 여러 개의 작업(태스크)이 동시에 처리하는 것
    • 프로그램언어 → 프로그램 → 실행(프로세스)
  • 프로세스: 메모리 공간이 할당
  • 멀티프로세싱: 하나의 응용프로그램이 여러 개의 프로세스

스레드(thread)

  • 하나의 작업 단위
  • 운영체제에 의해 관리되는 하나의 작업 혹은 테스크(작업단위)
  • 스레드와 테스크(혹은 작업)은 바꾸어 사용해도 무관

멀티스레딩(multi-threading)

  • 여러 스레드를 동시에 실행시키는 프로그래밍 방법
  • 하나의 응용프로그램이 여러 개의 스레드를 생성하고, 각 스레드가 하나의 작업을 처리하는 기법
  • 하나의 응용 프로그램에 속한 스레드는 변수 메모리, 파일 오픈테이블 등 자원으로 공유하므로, 문맥교환에 따른 오버헤드가 매우 작음
  • 현재 대부분의 운영체제가 멀티스레딩을 기본으로 하고 있음.

thread 주요멤버

  • run() : 스레드코드서 JVM에 의해 호출, 반드시 오버라이딩 해서 구현. *
    • run 메소드가 종료되면 스레드도 종료된다
  • start() : JVM에서 스레드를 실행하도록 요청 *
  • interrupt() : 스레드 강제 종료
  • join() : 스레드 종료할 때까지 기다린다
  • getId : 스레드 아이디
  • getName : 스레드 이름
  • sleep() : 스레드 잠시 멈춤*
  • currentThread() : 현재 실행중인 스레드
profile
자바를 배우고 있어요

0개의 댓글