프로그래밍 언어49 멀티스레드 동시성(Concurrency)vs병렬성(Parallelism) 동시성 - 싱글코어에서 멀티스레드가 번갈아가며 실행하는 성질 병렬성 - 멀티코어에서 각 개별 스레드가 동시에 여러 작업을 처리하는 것 스레드 스케줄링 - 스레드의 개수가 코어수보다 많을 경우 어떤순서에 의해 스레드를 동시성으로 처리하는가를 결정 이 그림을 보면 하나의 커피머신이 있는데 커피를 받기 위한 사람들의 줄이 2줄로 되어 있습니다. 그래서 서로 번갈아가면서 커피를 타게 되는 것이죠. 이러한 것을 동시성 처리라고 정의하고 있습니다. 반면에 병렬 처리의 경우는 2개의 커피 머신이 있고 각 커피 머신마다 하나의 줄을 가지고 있어서 각각의 줄마다 커피를 받을 수 있는 것을 병렬 처리라고 할 수 있습니다. 2019. 9. 6. 객체(Object)의 개념 객체 지향 프로그래밍이란? 자동차를 만들 때 각종 부품을 먼저 개발하고 이 부품들을 하나씩 조립해서 완성된 제품(자동차)을 만들 듯이, 소프트웨어를 개발할 때도 만들고자 하는 완성품인 객체를 모델링해 여러 부품들을 조립해서 완성된 하나의 프로그램(Object)을 만드는 기법을 객체 지향 프로그래밍이라 한다. 객체란? 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것을 말함. 예를 들자면 자동차는 색상, 모델명이라는 속성과 달린다, 멈춘다라는 동작이 있다. 자바에서는 이 속성과 동작들을 각각 필드(field)와 메서드(method)라고 부른다. 객체와 클래스 자동차를 만들기 위해서는 설계도를 바탕으로 자동차가 만들어지는데 자바에서는 설계도=클래.. 2019. 9. 3. Wrapper 클래스 개념 자바는 기본 타입(int, char, float, double..)과 참조 타입(기본형을 제외한 모든 자료형-배열, 클래스.. 등등)으로 나누어진다. 참조 타입인 포장(wrapper) 객체는 기본 타입의 값을 갖는 객체로 기본 타입의 값을 내부에 두고 포장한다. 예를 들어서 Integer obj = new Integer(100) 이런 식으로 int type의 값을 갖는 포장 객체를 만들 수 있다. *단 포장 객체에서 포장하고 있는 기본 타입 값은 외부에서 변경할 수 없다. int(10)의 값을 -> Integer(10) 기본(원시) 타입의 값을 포장 객체로 만드는 과정을 박싱(Boxing) Integer(10) -> 포장 객체에서 int의 값 10을 얻어오는 과정을 언박싱(Unboxing)이라 한다. 2019. 9. 2. 제네릭이란 무엇인가? 제네릭을 사용하는 이유 1. 코드에서 잘못 사용된 타입 때문에 발생하는 문제점을 제거하기 위해 컴파일 시 미리 강한 타입 체크를 한다. 2. 불필요한 타입 변환은 프로그램 성능에 악영향을 미치게 때문에 타입 변환(casting)을 제거한다. 제네릭을 쓰지 않은 경우 Object Type 으로 모든 객체를 저장할 수는 있지만 Object Type 필드에 "Java"로된 String Type 저장하거나 Object필드에서 값을 읽을 경우에 타입 변환이 발생하면서 프로그램 성능에 악영향을 미칠 뿐만 아니라 일일이 타입 변환을 해줘야 하는 번거로움도 생긴다. 제네릭을 썻을 경우 타입 파라미터 T를 사용해서 Object Type을 모두 T로 대체한 후 Box 클래스로 객체를 생성할 때 구체적인 타입으로 변경된다... 2019. 9. 2. 이전 1 ··· 9 10 11 12 13 다음