-
[자바의 정석] Ch.13 쓰레드스터디플래너/공부하기 2022. 7. 24. 10:03
6. 쓰레드 그룹(thread group) 서로 관련된 쓰레드를 그룹으로 다루기 위한 것으로 쓰레드를 그룹으로 묶어서 관리할 수 있다. 쓰레드 그룹에 다른 쓰레드 그룹을 포함시킬 수 있고 자신이 속한 쓰레드 그룹이나 하위 쓰레드 그룹을 변경할 수 있지만 다른 쓰레드 그룹의 쓰레드를 변경할 수 없다. 자바 어플리케이션이 실행되면 JVM은 main 쓰레드 그룹과 system 쓰레드 그룹을 만들고 JVM운영에 필요한 쓰레드들을 생성해서 쓰레드 그룹에 포함시킨다. 모든 쓰레드 그룹은 main 쓰레드 그룹의 하위 쓰레드 그룹이 되고, 쓰레드 그룹을 지정하지 않고 생성한 쓰레드는 자동적으로 main쓰레드 그룹에 속하게 된다. Thread 클래스의 getThreadGroup()메소드를 이용하면 어떤 쓰레드 그룹에 속..
-
[자바의 정석] Ch.13 쓰레드스터디플래너/공부하기 2022. 7. 17. 09:52
1. 프로세스와 쓰레드 프로그램을 실행하면 운영체제로부터 필요한 메모리를 할당받아 프로세스가 된다. 프로세스란 실행중인 프로그램을 말한다. 프로세스는 자원과 쓰레드로 구성되어있고 자원을 이용해 작업을 수행하는 것은 쓰레드이다. 모든 프로세스는 하나 이상의 쓰레드가 존재하고 둘 이상의 쓰레드를 가진 프로세스를 멀티쓰레드 프로세스라 한다. 멀티태스킹과 멀티쓰레딩 현재 유투브로 음악을 재생한 상태로 블로그를 작성하고 있다. 이렇게 한 번에 여러가지 작업을 하는 것을 멀티태스킹이라 한다. 멀티쓰레딩은 하나의 프로세스 내에서 여러 개의 쓰레드가 동시에 작업하는 것을 말한다. CPU의 코어는 한 번에 하나의 작업을 수행할 수 있기 때문에 동시에 처리할 수 있는 작업의 개수는 코어의 개수와 일치한다. 하지만 쓰레드는..
-
[자바의 정석] Ch.12 지네릭스, 열거형, 애너테이션스터디플래너/공부하기 2022. 7. 2. 10:05
3. 애너테이션 3.1 애너테이션이란? 애너테이션이란 주석이란 뜻으로, 프로그램의 소스코드 안에서 프로그램에 영향을 미치지 않으면서 프로그램에 유용한 정보를 미리 약속된 형식으로 포함시키는 것이다. 아래 소스코드에서 '@Test'라는 애터네이션을 붙이면 이 메서드는 테스트해야한다는 것을 테스트 프로그램에게 알려줄 뿐 프로그램에 영향을 미치지 않는다. @Test // 이 메서드가 테스트 대상임을 테스트 프로그램(ex. JUnit)에게 알려줌 public void add(int num1, int num2){ return num1 - num2; } 초기 자바 개발자들은 소스코드와 소스코드에 대한 문서를 따로 작성했으나, 소스코드를 수정할 때마다 소스코드에 대한 문서를 함께 수정하는 것이 번거로워지자 소스코드와..
-
[자바의 정석] Ch.12 지네릭스, 열거형, 애너테이션스터디플래너/공부하기 2022. 6. 21. 08:00
2. 열거형(enums) 2.1 열거형이란? class Card{ static final int CLOVER = 0; static final int HEART = 1; static final int DIAMOND = 2; static final int SPADE = 3; static final int TWO = 0; static final int THREE = 1; static final int FOUR = 2; final int kind; final int num; } class Card{ enum Kind{ CLOVER, HEART, DIAMOND, SPADE } enum Value{ TWO, THREE, FOUR } final Kind kind; final Value value; } - 위와 같이 ..
-
[자바의 정석] Ch.12 지네릭스, 열거형, 애너테이션스터디플래너/공부하기 2022. 6. 8. 22:59
1. 지네릭스(Generics) 1.1 지네릭스란 지네릭스는 다양한 타입의 객체를 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크(compile-time type check)를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. 지네릭스를 사용하는 이유를 간단히 말하면 클래스, 인터페이스, 메서드를 정의할 때, 클래스나 인터페이스의 타입이 매개변수가 되도록 할 수 있기 때문이다. 메소드를 선언할 때 사용하는 익숙한 매개변수처럼 자료형 매개변수는 같은 코드에 다른 입력값으로 재사용할 수 있는 방법을 제공한다. 우리에게 익숙한 매개변수와 지네릭스의 차이는 값을 입력하느냐 자료형을 입력하느냐의 차이다. 지네릭스를 사용한 코드는 그렇지 않..
-
[자바의 정석] Ch.11 컬렉션 프레임웍(Collections Framework)스터디플래너/공부하기 2022. 5. 24. 08:24
1.8 HashSet Set인터페이스를 구현한 가장 대표적인 컬렉션이며, 중복된 요소를 저장하지 않는다. add()나 addAll()메소드를 사용하여 새로운 요소를 추가하는데 boolean타입으로 반환하여 true이면 추가, false이면 추가에 실패한 것이다.List처럼 저장순서를 유지하면서 저장하고 싶다면 LinkedHashSet을 사용해야 한다. 요새 책의 내용을 그냥 받아적기만 하는 것 같아 다른 걸 좀 더 해야겠다 생각했고 많은 사람들이 공식 문서를 봐야 한다고 해서 찾아봤다. java.util.HashSet은 java.lang.Object > java.util.AbstractCollection > java.util.AbstractSet > java.util.HashSet으로 되어있다. Coll..
-
[자바의 정석] Ch.11 컬렉션 프레임웍(Collections Framework)스터디플래너/공부하기 2022. 5. 20. 06:12
1.5 Iterator, ListIterator, Enumeration Iterator 최근에 듣고있는 JS 강의에서 Iterable을 공부했다. 실습 위주라 코드를 작성하며 듣다보니 그냥 그렇구나 하고 넘어갔는데 Java 컬렉션 프레임웍을 공부할 때 또 나온다. 책 내용을 읽긴 읽었지만 도저히 무슨 말인지 모르겠어서 찾아봤다. Iterator는 컬렉션 프레임웍의 Set, List 인터페이스를 상속받은 ArrayList, HashSet과 같은 클래스에 저장된 각 요소를 읽어오는 기능을 표준화한 인터페이스이다. Iterator를 구현한 클래스의 인스턴스 iterator()는 Collection인터페이스에 저장된 메서드이므로 List와 Set인터페이스에도 포함되어 있다. 이를 구현한 컬렉션 클래스에 대해 i..
-
[자바의 정석] Ch.11 컬렉션 프레임웍(Collections Framework)스터디플래너/공부하기 2022. 5. 10. 08:25
1. 컬렉션 프레임웍(Collections Framwork) 컬렉션 프레임웍이란 '데이터 군을 저장하는 클래스들을 표준화한 설계'를 뜻한다. 솔직히 이 설명만으로 감이 오지 않아서 영어로 된 설명은 찾아봤다. The Java collections framework provides a set of interfaces and classes to implement various data structures and algorithms. Java 컬렉션 프레임웍은 다양한 알고리즘과 자료구조를 구현하는 클래스와 인터페이스를 제공한다(부정확할 수 있음). 다양한 데이터를 다루는데 도움이 되는 클래스를 제공하고, 인터페이스와 다형성을 이용한 객체지향 설계를 통해 표준화되어 있어 재사용성이 높은 코드를 작성할 수 있게 ..