자바

· 자바
컨텍스트 스위칭다른 스레드 없이 메인 스레드 하나만 스케줄링하다고 하면, 메인 스레드는 항상 실행될 것이다. 반대로 CPU 개수보다 실행 중인 스레드의 개수가 많다고 하면, 운영체제가 특정 스레드의 실행 스케줄을 선점하고 다른 스레드가 실행될 수 있도록 스케줄을 잡는다. 이처럼 하나의 스레드가 실행되다가 다른 스레드가 실행되는 순간 컨텍스트 스위칭이 일어난다. 컨텍스트 스위칭이 일어나는 상세한 구조를 보면, 먼저 현재 실행 중인 스레드의 실행 상태를 보관해두고, 다음번 실행되기로 스케줄 된 다른 스레드의 실행 상태를 다시 읽어 들인다. 스레드 스케줄링을 하려면 운영체제와 JVM 내부의 공용 자료 구조를 다뤄야 한다는 문제가 있다. 운영체제와 JVM 역시 프로그램 스레드가 사용하는 것과 같은 CPU를 함께..
· 자바
확장성은 CPU, 메모리, 디스크, I/O 처리 장치 등의 추가적인 장비를 사용해 처리량이나 용량을 얼마나 쉽게 키울 수 있을지를 말한다. 병렬 프로그램 환경에서 확장성을 충분히 가질 수 있도록 애플리케이션을 설계하고 튜닝하는 방법은 기존에 해오던 일반적인 성능 최적화 방법과 다른 부분이 많다. 성능을 높이기 위해 튜닝하는 작업을 하는 경우 그 목적은 어쨌건 동일한 일을 더 적은 노력으로 하고자 하는 것이다. 성능이라는 단어에 포함된 '얼마나 빠르게'와 '얼마나 많이'라는 두 가지의 의미는 완전히 다른 뜻을 가지며, 심지어는 서로 화합할 수 없는 상황도 발생한다. 더 높은 확장성을 확보하거나 하드웨어 자원을 더 많이 활용하도록 하다 보면, 앞서 큰 작업 하나를 작은 여러 개의 작업으로 분할해 처리하는 것..
· 자바
슬라이싱슬라이싱 메서드는 필요한 데이터만 가져오는 데 유용하다.필요한 데이터만 가져오기 때문에 스트림을 끝까지 읽지 않고도 필요한 데이터를 처리할 수 있어 처리 시간을 단축하거나 메모리 사용량을 줄일 수 있다.이때 원하는 데이터를 얻기 위해서는 슬라이싱을 적용할 데이터는 이미 정렬되어 있어야 한다. takeWhile프레디케이트가 처음 참이 되는 지점부터 이후의 요소를 반환한다.dropWhile프레디케이트가 처음 거짓이 되는 지점까지 발견된 요소를 버린다.limit주어진 값 이하의 크기를 갖는 새로운 스트림을 반환한다.스트림이 정렬되어 있으면 최대 요소 n개를 반환할 수 있다.skip처음 n개 요소를 제외한 스트림을 반환한다.n개 이하의 요소를 포함하는 스트림에 skip을 호출하면 빈 스트림이 반환된다. ..
· 자바
모던 자바 인 액션 4~6장을 보며 정리한 내용 스트림이란?데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소.자바 8에 추가된 선언형 API 스트림과 컬렉션컬렉션// 컬렉션: 모든 데이터를 메모리에 미리 준비List collection = Arrays.asList(1, 2, 3, 4, 5);List collectionResult = new ArrayList();for(int i : collection) { // 데이터가 계산된다. if(i % 2 == 0) { // 데이터가 추가된다. 메모리에 올라간다. collectionResult.add(i); }}컬렉션은 데이터를 저장하기 위한 자료구조이다.컬렉션에 추가되는 데이터는 메모리에 올라가게 된다.그렇기에 ..
· 자바
프로세스와 스레드프로세스프로세스는 독립된 실행 환경을 가지고 있고 일반적으로 비공개 기본 런타임 리소스 집합을 가지고 있으며, 특히 각 프로세스에는 자체 메모리 공간이 있다.프로세스는 종종 프로그램 또는 애플리케이션과 동의어로 간주된다. 그러나 사용자가 하나의 애플리케이션으로 보는 것은 실제로는 협력하는 프로세스의 집합일 수 있다. 대부분의 Java 가상 머신 구현은 단일 프로세스로 실행된다.  스레드스레드는 경량 프로세스라고도 한다. 프로세스와 스레드 모두 실행 환경을 제공하지만 새 스레드를 만드는 것이 새 프로세스를 만드는 것보다 더 적은 리소스를 필요로 한다. 스레드는 프로세스 내에 존재하며 모든 프로세스에는 적어도 하나가 있다. 스레드는 메모리와 오픈된 파일 등 프로세스의 리소스를 공유한다. 이는..
belljun
'자바' 태그의 글 목록