전체 글(94)
-
[JS] 고차 함수 (higher-order function)
고차 함수란? 하나 이상의 함수를 매개변수로 취하거나 함수를 결과로 반환하는 함수다. 매개변수로 전달되는 함수는 콜백 함수(Callback function)다. 대표 배열 조작 메서드 임의 정렬 : Array.sort(callback function) 반복 작업 : Array.forEach() 콜백 함수 결과 배열 반환 : Array.map() 조건을 만족하는 값 하나만 반환 : Array.find() 조건을 만족하는 값 배열로 반환 : Array.filter() 누적 결과 값 반환 : Array.reduce() sort() 문제와 한계점 문제 : 일의 자리 4가 10의 자리보다 뒤쪽에 정렬 원인 : sort 메서드로 정렬될 때 배열의 요소가 일시적으로 문자열로 변경되어 발생 let nums = [1, ..
2022.03.04 -
[Java] 스레드(Thread) - wait(), notify() 활용 예제
리소스가 어떤 조건에서 더 이상 유효하지 않은 경우 리소스를 기다리기 위해 Thread가 wait() 상태가 된다 wait() 상태가 된 Thread는 notify()가 호출될 때까지 기다린다 유효한 자원이 생기면 notify()가 호출되고 wait()하고 있는 Thread 중 무작위로 하나의 Thread를 재시작한다 notifyAll()이 호출되는 경우 wait() 하고 있는 모든 Thread가 재시작된다 notifyAll()이 호출되는 경우 유효한 리소스만큼의 Thread만이 수행되며 자원을 갖지 못한 Thread는 다시 wait() 상태로 돌아간다 자바에서는 notifyAll() 메서드의 사용을 권장한다 도서관에 자리가 부족해 기다리는 경우를 가장한 코딩 예제 notify()를 사용하는 경우 imp..
2022.02.27 -
[Java] 멀티 스레드 동기화(multi-threaded synchronization)
임계 구역(critical section)과 세마포어(semaphore) critical section은 여러 개의 thread가 동시에 접근할 수 없는 영역이다 semaphore는 특별한 형태의 시스템 객체이며 get/release 두 개의 기능이 있다 한 순간 오직 하나의 thread 만이 semaphore를 얻을 수 있고 나머지 thread들은 대기(blocking) 상태가 된다 semaphore를 얻은 thread 만이 critical section에 들어갈 수 있다 Kh 클래스와 Ys 클래스가 동시에 Bank 클래스에 접근하는 예제 package ch22; class Bank { private int money = 5000; public synchronized void saveMoney(int ..
2022.02.27 -
[Java] 스레드(Thread) 종료하기 예제
무한 반복하는 스레드를 만들고 종료하는 예제를 작성해보자. 세 개의 thread를 만든다 'A'를 입력받으면 첫 번째 thread를 종료한다 'B'를 입력받으면 두 번째 thread를 종료한다 'C'를 입력받으면 세 번째 thread를 종료한다 'M'을 입력받으면 모든 thread와 main() 함수를 종료한다 무한 반복의 경우 while(flag)의 flag 값을 false로 바꿔서 반복문을 나간다. 스레드 종료하기 예제 import java.io.IOException; public class TerminateThread extends Thread { private boolean flag = false; int i; public TerminateThread(String name) { super(name..
2022.02.27 -
[Java] 스레드(Thread) 우선순위 - (MIN, NORM, MAX)_PRIORITY
자바 Thread 클래스에는 스레드의 우선순위를 정할 수 있는 메서드가 있다. Thread.MIN_PRIORITY(=1) ~ Thread.MAX_PRIORITY(=10) 디폴트 우선순위 : Thread.NORM_PRIORITY(=5) 우선순위가 높아진다고 무조건 높아지는 것이 아니라 높아질 확률이 올라가는 것이다 setPriority() / getPriority() Thread 우선순위 예제 class PriorityThread extends Thread { public void run() { Thread t = Thread.currentThread(); System.out.println(t + "start"); System.out.println(t.getPriority() + "end"); } } pu..
2022.02.27 -
[Java] 스레드(Thread) 개념 정리 - sleep(), wait(), join()
스레드의 개념 프로세스(process)란? 프로세스(process)란 단순히 실행 중인 프로그램(program)이라고 할 수 있다. 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말한다. 이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성된다. 스레드(thread)란? 스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미한다. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행한다. 또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 한다. 멀티 스레딩(multi-threading) 하나의 프로세스 내에서 둘 이상의 th..
2022.02.27