람다식의 기본 개념
·
자바/람다식
1. 람다식이란? - 메서드를 하나의 '식'으로 표현한 것을 말한다. 그러므로, 메서드의 이름과 반환값이 사라진다. - 우리는 그것을 익명 함수라고 표현한다. - 아래의 예시를 보자. int[] arr = new int[5]; Arrays.setAll(arr, (i) -> (int) (Math.random() * 5) + 1); (위 주황색 부분이 람다식이다.) (이렇게 한다면 클래스와 객체를 생성할 필요없이 바로 호출할 수 있다는 장점이 있다.) 2. 람다식 작성하기. - 아래의 코드는 원래의 메서드 함수이다. 이것을 람다식으로 바꾸어 볼 것이다. (int a, int b) -> {return a>b ? a : b;} 또는 (int a, int b) -> a>b? a : b 또는 (a,b) -> a>b..
쓰레드의 실행제어
·
자바/프로세스와 쓰레드
1. 쓰레드의 실행제어 - 쓰레드 프로그래밍이 어려운 이유는 동기화(synchronization)와 스케줄링(scheduling) 때문이다. - 멀티쓰레드를 구현하기 위해서는 보다 정교한 스케줄링을 통해 자원 낭비없이 프로그래밍 해야한다. - 아래의 코드는 쓰레드 상태 관련 메서드들이다. 메서드 설명 static void sleep(long millis), sleep(long millis, int nanos) 지정된 시간(천분의 일초 단위) 동안 쓰레드를 일시정지한다. 시간이 지나면 다시 실행대기 상태가 된다. void join(), join(long millis), join(long millis, int nanos) 지정된 시간만큼 작업을 수행 후, 호출한 쓰레드로 다시 돌아온다. void interr..
데몬 쓰레드
·
자바/프로세스와 쓰레드
1. 데몬 쓰레드에 대한 기본 개념 - 데몬 쓰레드는 다른 일반 쓰레드의 작업을 돕는 보조적인 역할을 수행하는 쓰레드이다. - 일반 쓰레드가 종료되면 데몬 쓰레드도 강제적으로 종료되는데, 그 이유는 일반 쓰레드를 보조 역할로 수행하는데 없으면 있을 이유가 없기 때문이다. - 데몬 쓰레드의 예로는 가비지 컬렉터, 워드프로세서의 자동저장, 화면자동갱신 등이 있다. - 데몬 쓰레드는 무한 루프와 조건문을 이용해서 실행 후 대기하고 있다가 특정조건이 만족되면 작업을 수행 후 다시 대기한다. - 데몬 쓰레드는 일반 쓰레드의 작성방법과 실행방법이 같으나, 쓰레드를 생성한 다음 실행하기 전에 setDaemon(true)를 호출해주어야 한다. - 데몬 쓰레드가 생성한 쓰레드는 자동적으로 데몬 쓰레드가 된다. 2. 데몬..
쓰레드의 우선순위와 쓰레드 그룹
·
자바/프로세스와 쓰레드
1. 쓰레드의 우선순위에 대한 개념 - 쓰레드는 기본적으로 우선순위라는 속성(멤버변수)를 가진다. - 이 값에 따라 실행시간이 달라진다. - 쓰레드가 가질 수 있는 우선순의 값 범위는 1~10이며 높을수록 높다. - 기본적으로 5의 값을 가진다. - 만약 각각 쓰레드 th1, th2는 7와 5의 우선순위를 가진다면, 싱글 코어에서는 th1부터 먼저 실행하게 되며, th2보다 더 빨리 작업을 마친다. 그러나 만약 멀티코어에서 수행하게 되면 th1이 더 빨리 수행되긴하지만 거의 차이 없이 똑같이 번갈아가면서 출력한다. ( 멀티코어에서는 별 차이가 없을정도가 아니라 전혀 없다. ) ( 그러므로, 우선순위를 부여하는 대신 PriorityQueue 클래스에 저장해 놓고, 우선순위가 높은 작업을 먼저 처리하는 것이..