Study in SSAFY/이것이 자바다

    [이것이 자바다] 16.11 스트림과 병렬처리 - 수집(collect())

    [이것이 자바다] 16.11 스트림과 병렬처리 - 수집(collect())

    본 포스팅은 [이것이 자바다]의 내용을 참고하여 작성하였습니다. 16.11 수집: collect() 요소들을 필터링 또는 매핑한 후 수집하는 최종 처리 메소드. 필요한 요소만 컬렉션으로 담을 수 있다. 요소들을 그룹핑한 후 집계(리덕션)할 수 있다. 16.11.1 필터링한 요소 수집 collect(Collector collector) 메소드는 필터링 또는 매핑된 요소들을 새로운 컬렉션에 수집하여 리턴한다. 위의 매개값인 Collector(수집기)는 어떤 요소를 어떤 컬렉션에 수집할 것인지를 결정한다. Collector의 타입 파라미터 T는 요소, A는 누적기, R은 요소가 저장될 컬렉션이다. 풀어서 해석하면, T 요소를 A 누적기가 R에 저장한다 는 의미이다. 다음과 같이 다양한 정적 메소드를 이용하여 ..

    [이것이 자바다] 12.6 멀티스레드 - 스레드 상태 제어

    [이것이 자바다] 12.6 멀티스레드 - 스레드 상태 제어

    본 포스팅은 [이것이 자바다]의 내용을 참고하여 작성하였습니다. 12.6.1 주어진 시간동안 일시 정지: sleep() 실행중인 스레드를 일정 시간 멈추게 하고 싶다면 Thread 클래스의 정적 메소드인 sleep()을 사용하면 된다. 다음과 같이 Thread.sleep() 메소드를 호출한 스레드는 주어진 시간 동안 일시 정지 상태가 되고, 다시 실행 대기 상태로 돌아간다. try { Thread.sleep(1000); } catch(InterruptedException e) { // interrupt() 메소드가 호출되면 실행 } 매개값으로는 얼마 동안 일시 정지 상태로 있을 것인지, ms 단위로 시간을 주면 된다. 주어진 시간이 되기 전에 interrupt() 메소드가 호출되면 InterruptedE..

    [이것이 자바다] 12.5 멀티스레드 - 스레드 상태

    [이것이 자바다] 12.5 멀티스레드 - 스레드 상태

    본 포스팅은 [이것이 자바다]의 내용을 참고하여 작성하였습니다. 스레드 객체를 생성하고 start() 메소드를 실행하면, 실행 대기 상태가 된다. (실행 대기 상태란, 아직 스케줄링이 되지 않아 실행을 기다리고 있는 상태를 말한다.) 실행 대기 상태에 있는 스레드 중에서 스레드 스케줄링으로 선택된 스레드가 CPU를 점유하고 run() 메소드를 실행한다. 이 때를 실행(Running) 상태라고 한다. 실행 상태의 스레드는 run() 메소드를 전부 실행하기 전에 스레드 스케줄링에 의해 다시 실행 대기 상태로 돌아갈 수 있다. 그리고 다른 드레스가 선택되어 실행 상태가 된다. 이러한 과정을 반복하며 스레드는 자신의 run() 메소드를 조금씩 실행하고, 실행된 상태에서 run() 메소드가 종료되면 더 이상 실행..

    [이것이 자바다] 12.4 멀티스레드 - 동기화 메소드와 동기화 블록

    [이것이 자바다] 12.4 멀티스레드 - 동기화 메소드와 동기화 블록

    본 포스팅은 [이것이 자바다]의 내용을 참고하여 작성하였습니다. 12.4.1 공유 객체를 사용할 때의 주의할 점 멀티 스레드 프로그램에서는 스레드들이 객체를 공유해서 작업해야 하는 경우가 있음. ex) 스레드 A가 사용하던 객체가 스레드 B에 의해 변경될 수 있기 때문에 A가 의도한 것과 다른 결과 산출. 12.4.2 동기화 메소드 및 동기화 블록 따라서 스레드가 사용 중인 객체를 다른 스레드가 변경할 수 없도록 하려면, 객체에 잠금을 걸어서 다른 스레드를 사용하지 못하게 해야 한다. 객체에 잠금을 걸기 위해 자바는 동기화(synchronized) 메소드와 동기화 블록을 제공한다. 스레드가 객체 내부의 동기화 메소드 또는 블록에 들어가면 즉시 객체에 잠금을 걸어 다른 스레드가 *임계 영역 코드를 실행하지..

    [이것이 자바다] 11. 기본 API 클래스(Math~Formatting)

    [이것이 자바다] 11. 기본 API 클래스(Math~Formatting)

    본 포스팅은 [이것이 자바다]의 내용을 참고하여 작성하였습니다. 1. Math 클래스 수학 계산에 사용할 수 있는 메소드를 제공 제공하는 메소드는 모두 static하므로 Math 클래스로 바로 사용 가능하다. abs - 절대값 Math.abs(int a) Math.abs(double a) max - 최댓값 Math.max(int a, int b) Math.max(double a, double b) min - 최솟값 Math.min(int a, int b) Math.min(double a, double b) ceil - 올림값 Math.ceil(double a) floor - 버림값 Math.floor(double a) round - 반올림값 Math.round(double a) long 타입 정수 반환 ..

    [이것이 자바다] 10. 예외 처리

    [이것이 자바다] 10. 예외 처리

    본 포스팅은 [이것이 자바다]의 내용을 참고하여 작성하였습니다. 1. 예외와 예외클래스 에러(Error): 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램 실행 오류가 발생하는 것 예외(Exception): 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류 일반 예외(Exception): 컴파일하는 과정에서 예외 처리 코드가 필요한 지 검사함 (빨간줄) 실행 예외(Runtime Exception): 컴파일하는 과정에서 예외 처리 코드를 검사하지 않음 예외 처리(Exception Handling)을 통해 프로그램을 종료하지 않고 정상 실행 상태를 유지할 수 있다. → JVM은 예외가 Rumtime Exception을 상속했는지 여부를 보고 실행 예외를 판단한다! 2...

    [이것이 자바다] 02. 변수와 타입

    [이것이 자바다] 02. 변수와 타입

    본 포스팅은 [이것이 자바다]의 내용을 참고하여 작성하였습니다. 1. 변수 (Variable) 변수란? 하나의 값을 저장할 수 있는 메모리 공간 변수의 선언 타입 변수이름; 과 같은 방식으로 선언 ex) int age; double type; … ⚠️ 주의 사항 : 예약어를 변수 이름으로 사용할 수 없다!! ex) long, short, new, try, return, true, false 변수의 사용 변수 값 저장 int score = 90; 2️⃣ 정수 타입 변수 ‘score’에 저장! ← 1️⃣ 90이라는 값을, 정수 리터럴 소수점이 없는 정수 리터럴은 10진수 0, 75 -100 0으로 시작되는 리터럴은 8진수 02, 04 0x 또는 0X으로 시작 or A,B,C,D,E,F 또는 a,b,c,d,e..