JAVA/JAVA2 42

[java2] #22 - Thread(스레드) 활용

데몬(daemon) 스레드 데몬 스레드는 주 스레드의 작업을 돕는 보조 스레드이다. 보통 사용자가 직접 제어하지 않고 백그라운드에서 실행된다. 주 스레드가 종료되면 데몬 스레드는 자동으로 종료된다. 사용 방법 주 스레드에서 setDaemon() 메서드를 호춣하여 데몬을 설정한다. start() 호출하여 스레드가 실행되기 전에 setDaemon()을 호출해야 정상적으로 설정된다. isDaemon() 메서드로 데몬여부를 확인할 수 있다. 예제 public class DaemonTh extends Thread{ void whileDaemonRunning(){ System.out.println("데몬스레드 실행중"); } void ifInterrupted(){ System.out.println("데몬스레드 in..

JAVA/JAVA2 2022.08.11

[java2] #21 - Thread 제어 (우선순위설정, 동기화, 메서드)

스레드 우선순위 스레드는 우선순위를 할당할 수 있다. 스레드가 여러개인 경우 우선순위가 높은 스레드가 제어권을 가질 기회가 많아진다. 우선순위는 1~10까지 int 값으로 할당되며 우선순위가 높은 스레드는 실행기회를 많이 갖는다. 하지만 우선순위가 높다고 해서 자원을 모두 가져가거나 항상 먼저 실행된다는 의미는 아니다. 프로세스가 스레드를 번갈아 수행하는데 코드를 좀 더 자주 실행한다는 의미이다. public static final int MAX_PRIORITY 가장 높은 순위. 상수 10 public static final int NORM_PRIORITY 일반적인 순위. 상수 5 public static final int MIN_PRIORITY 가장 낮은 순위. 상수 1 프로세스는 한번에 스레드 1개밖..

JAVA/JAVA2 2022.08.10

[java2] #20 - Thread (스레드)

프로세스(process) - 프로세스란 단순히 실행중인 프로그램이라고 할 수 있다. (프로그램 : 파일 시스템에 존재하는 실행파일) - 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행중인 것을 말한다. 이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성된다. 스레드(thread) - 하나의 프로세스 내에 여러개의 실행 흐름(단일,동시적,병렬적)을 두어 작업을 효율적으로 처리하기 위한 모델이다. - [프로그램 실행 > JVM 시작 > 자바 프로세스 시작] 이 때 프로세스 안에 스레드가 있다. - 스레드란 프로세스 내에서 실제로 작업을 수행하는 주체를 의미한다. 보통 가벼운 프로세스라고 표현하며 프로그램 코드를 한 줄씩 실행하는것이 스레드의 역할이다...

JAVA/JAVA2 2022.07.28

[java2] #19 - IntStream 반복문

# IntStream을 이용한 반복문 Stream이란 다양한 데이터를 표준화된 방법으로 다루기 위한 라이브러리이며 자바8부터 추가되었다. 여러 종류(LongStram, DoubleStream...)의 스트림이 있다. IntStream을 이용하여 반복문을 처리하게 되면 코드가 줄고 가독성이 좋아진다. 그렇지만 모든 상황에서 IntStream을 사용하는 것 보단 상황에 따라 적절한 반복문을 쓰는 것이 필요하다. for & IntStream - 일반적인 for문 public coid loop() { for(int i = 1; i

JAVA/JAVA2 2022.07.27

[java2] #18 - final 키워드

# final final 키워드는 변수(variable), 메서드(method), 클래스(class)에 사용될 수 있다. 이 final 키워드는 어떤 곳에 사용되냐에 따라 다른 의미를 가진다. 하지만 final 키워드를 붙이면 무언가를 제한다는 공통적 의미를 가진다. final 변수(variable) 변수에 final을 붙이면 이 변수는 수정할 수 없다는 의미를 가진다. 수정될 수 없기 때문에 초기화 할 때 필수로 값을 넣어야 한다. 만약 객체 안의 변수라면 생성자, static 블럭을 통한 초기화까지는 허용한다. 수정할 수 없다는 범위는 그 변수의 값에 한정한다. 즉 다른 객체를 참조 할 때 참조하는 객체의 내부 값은 변경할 수 있다는 의미다. // fanal 변수 선언 예시 public class S..

JAVA/JAVA2 2022.07.27

[java2] #17 - Collection Framework(Set/List/Map), Iterator

컬렉션 프레임 워크 컬렉션 프레임 워크란 데이터를 저장하는 클래스들을 표준화 한 설계이며 아래 그림과 같이 데이터를 저장하는 구조에 따라 3가지 인터페이스로 구성된다. Set, List, Map은 데이터들의 집합체라고 볼 수 있다. 그 중 Set과 List는 데이터의 그룹(Collection)이다. Set 순서를 유지하지 않는 데이터의 집합이다. 데이터의 중복이 허용되지 않고 HashSet, TreeSet등이 있다. List 순서를 유지하는 데이터의 집합이다. 데이터의 중복이 허용되며 Vector, LinkedList, ArrayList 등이 있다. Map 키(Key)와 값(Value)으로 이루어진 데이터의 집합이다. 순서는 유지되지 않으며 키는 중복을 허용하지 않는다. Map의 클래스로는 TreeMap..

JAVA/JAVA2 2022.07.26

[java2] #16 - HashSet

HashSet - Set 인터페이스에서 지원하는 구현 클래스로 순서에 의미를 두지 않으며 데이터의 중복이 없다. (내부적으로 HashMap을 사용하여 구현되었기 때문에 어찌보면 당연한 이야기다.) 순서에 의미를 두지 않기 때문에 get(), set() 메서드가 제공되지 않는다. - HashSet은 객체를 저장(add) 하기 전 먼저 객체의 hashCode() 메소드를 호출해서 해시코드를 얻은 다음 저장되어있는 객체들의 해시 코드와 비교한 뒤 같은 해시코드가 있다면 다시 equals() 메소드로 두 객체를 비교해 true가 나오면 동일한 객체로 판단하고 중복 저장을 하지 않는다. - 오직 객채(Object)만 저장 가능하며, 그래서 HashMap보다 느리다. 왜냐하면 HashMap은 삽입되는 데이터의 형태..

JAVA/JAVA2 2022.07.26

[java2] #15 - HashMap

HashMap 이름 그대로 Hashing된 Map이며 사전식으로 데이터를 저장한다. 즉 키(Key)와 값(Value) 한 쌍(Entry)으로 데이터를 보관하는 자료 구조이다. key는 일반적으로 String 타입으로 만들고 value는 저장할 데이터 타입으로 만든다. 키(Key)는 맵(Map)에 오직 유일하게 있어야 한다. 즉 같은 맵에 두 개 이상의 키가 존재하면 안된다. (값은 중복값이어도 상관없다) Hashtable은 HashMap과 사용법이 거의 동일한 컬렉션이다. 두 클래스의 차이점은 Thread 관점에서 안전하냐(= Hashtable), 안전하지 않지만 속도가 빠르냐(=HashMap)이다. Map Key Value 나이 50 이름 김OO 주소 OO도 OO시 Map 인터페이스를 구현한 HashM..

JAVA/JAVA2 2022.07.25

[java2] #14 - ArrayList (개념/사용법)

ArrayList란 - Coolection 프레임워크의 일부이며 java.util 패키지에 소속 되어있다. - 표준 배열보단 느리지만 배열에서 많은 조작이 필요한 경우 유용하게 사용할 수 있다. - List 인터페이스에서 상속받아 사용되며 객체가 추가되어 용량을 초과하면 자동으로 부족한 크기만큼 용량이 늘어난다. 선언 방법 - 주로 타입으로 선언을 많이하고, 추가로 다른 타입(String, Character) 등의 타입으로 선언이 가능하다. 타입을 선언하면 해당 타입의 데이터만 추가 할 수 있다. ArrayList 값 추가하기 ArrayList의 값을 추가하기 위해서는 add() 메서드를 사용한다. add() 사용법 add(Object) add(int index, Object) ArrayList의 마지막..

JAVA/JAVA2 2022.07.19

[java2] #13 - Wrapper Class (래퍼 클래스)

자바의 자료형은 기본 타입 (primitive type)과 참조 타입 (reference type) 으로 나누어진다. 기본 타입 (primitive type) 정수, 실수, 문자, 논리 리터럴을 저장하는 타입 (byte, short, char, int, long, float, double, boolean) 참조 타입 (reference type) 배열, 열거, 클래스, 인터페이스 등 객체의 위치를 참조하는 타입 (class, interface, ...) - Wrapper Class (래퍼 클래스)란 8개의 기본 타입에 해당하는 데이터를 객체로 표현하기 위해 포장해주는 클래스라고 하며, 각각 타입에 해당하는 데이터를 인수로 전달받아 해당 값을 가지는 객체로 만들어 준다. 레퍼 클래스는 모두 java.lan..

JAVA/JAVA2 2022.07.19