728x90
반응형
728x90
반응형
데몬쓰레드 - Daemon thread 데몬쓰레드란 메인쓰레드 옆에서 보조를 담당하는 쓰레드이다. 보조쓰레드이기 때문에 항시 옆에서 동작하다가 메인쓰레드가 종료되면 같이 종료된다. 예시로 워드의 자동저장이나 GC가 있다. 데몬쓰레드 선언 아래의 코드처럼 데몬쓰레드를 선언할 때는 아래의 사항을 고려해야한다. setDaemon을 사용하여 데몬쓰레드를 생성하고 start전에 실행해줘야 데몬쓰레드로 적용된다. 데몬쓰레드는 항시 동작하고 메인쓰레드가 종료되면 동시에 종료되기 때문에 무한반복문으로 생성한다. 아래의 코드 순서: 쓰레드를 runnaable로 받아온 후에 Thread 클래스로 할당한다. 받은 쓰레드를 setDaemon으로 데몬쓰레드로 정의한 후에 만든 데몬쓰레드를 실행한다. 데몬쓰레드가 실행됨가 동시에..
멀티스레드 스레드란 한개의 프로세스에서 작동되는 실행 작동 장치이다. 즉, 멀티스레드의 의미는 한개의 프로세스에서 여러가지 작업을 하는 실행 작동 장치이다. 멀티스레드를 쓰는 것이 여러모로 좋지만, 아래의 사항에 주의해야한다. 동기화를 주의해야한다. 각 스레드가 효율적으로 고르게 실행되게 작성해야한다. 스레드의 구현과 실행 두가지의 방법을 사용할 수 있다. Thread 클래스를 상속 Runnable 인터페이스를 구현 Thread는 extends를 사용하여 클래스를 상속받고, Runnable의 경우에는 implements를 사용하여 Runnable 인터페이스를 상속받는다. public class ThreadRunnable{ public static void main(String[] args) { Nthre..
열거형 - Enum 관련된 상수들을 같이 묶어놓은 것 타입과 값을 둘다 체크함으로써 안전한 열거형을 제공 아래의 예시를 보면 ETH 가격과 XRP가격이 같더라도 다른 종류이기 때문에 false를 출력하는 것이 논리적으로 맞지만, 실행 시 true가 실행된다 Coin c = new Coin(); System.out.println(c.ETHPrice == c.XRPPrice) } } class Coin{ String BTC; String ETH; String XRP; int ETHPrice = 100; int XRPPrice = 100; } 열겨형 선언 따라서 열겨형을 선언하여 종류를 구분한다음 값을 비교를 하면 논리적으로 생각한대로 false가 출력이 된다. 1. 일단 먼저 enum을 선언하는 방법을 알아..
와일드 카드 일반적으로 지네릭스를 선언하면 대입된 타입이 일치해야 하는데, 와일드 카드를 사용하면 대입 변수가 불일치하여도 컴파일 오류가 발생하지 않는다. 대표적으로 아래와 같이 선언한다. : 모든 Object 타입 가능, Object / E / T를 직접 선언한 것과 같음 1. : 전부 선언가능 ArrayList arr7 = new ArrayList(); } } class nature{} class plant2 extends nature{} class basil2 extends plant2{} class rose extends plant2{} 지네릭스 형변환 지네릭스가 선언된 타입을 지네릭타입이라 하고 선언되지 않은 클래스 타입을 원시 타입이라 부른다. 원시타입을 지네릭타입으로 형변환이 가능할까? 컴파..
지네릭스 Collection 클래스의 타입체크를 해주는 기능을 가지고 있다. 아래의 예시처럼 지네릭스를 써주지 않으면 컴파일러가 arr.get(0)의 인덱스 자리의 값을 확인할 수 없기 때문에 일일이 형변환을 해주어야 컴파일오류가 나지 않는다. ArrayList arr = new ArrayList(); arr.add(1); arr.add(1); arr.add(1); int i = (Integer) arr.get(0); 지네릭스를 아래와 같이 지정해주면 컴파일러에게 새로운 기준을 넣어준 것이기 때문에 형변환을 하지 않아도 컴파일오류가 발생되지 않는다. 단 지정타입을 제외한 타입을 저장하게 될 경우 컴파일 오류 발생 ArrayList arr = new ArrayList(); arr.add(1); arr.ad..
Collections Collection 클래스를 위한 static 메서드를 제공한다. Math클래스와 동일한 방식으로 사용할 수 있다. Math.random, Math.abs 등 1. fill, copy, binearysearch, sort등 Arrays메서드와 동일한 메서드 보유 2. 동기화 전용 메서드를 보유 - synchronized Vector는 동기화가 되어있지만 ArrayList는 동기화를 안하게 되어있다. 필요할 때만 동기화된 클래스를 사용 기능적으로 효율적인 코드 아래의 형식처럼 Collections.synchronized로 동기화를 ArrayList에 적용하면 Vector클래스를 사용하는 것과 동일하다. List list = new ArrayList(); Collections.synch..
HashMap Map인터페이스를 구현한 클래스, 데이터를 키, 그리고 값으로 저장. Set과 동일하게 중복을 허용하지 않지만, 값(value)에 한해서 중복을 허용한다. 만약 순서를 정렬하고 싶다면 LinkedHashMap클래스를 사용한다. *TreeMap은 TreeSet과 동일한 기능이며 Map을 구현한 클래스라는 점에만 차이가 있다. TreeSet과 동일하게 데이터 삭제, 추가에 시간이 더 소요된다. HashMap의 특징 해싱(hashing)기법으로 데이터를 저장하기 때문에 데이터의 검색이 빠르다 해쉬(hash)함수를 사용하여 저장위치(index)를 지정하여 저장하고, 그 데이터를 불러올 때는 hash table에 접근하여 그 데이터를 가져온다. 접근성, 즉 hash를 사용하여 데이터를 카테고리화 시..
TreeSet 이진 탐색 트리로 구현되어 있고 범위탐색과 정렬에 유리함 이진 트리는 각각의 노드가 최대 0~2개의 노드를 가질 수 있음 각각의 노드 중 작은 값은 부모의 왼쪽, 큰 값은 부모의 오른쪽에 저장된다. 이 때문에 값을 추가하거나 삭제할 때 비교시간이 더 걸리게 된다. 값이 작으면 왼쪽, 크면 오른쪽에 저장되기 때문에 새로운 값이 들어가거나 기존의 값이 없어지게되면 값을 새롭게 비교해야되므로 시간적으로 효율이 떨어짐 TreeSet의 저장과정 다른 Set클래스들과 동일하게 add()를 사용 수정용 TreeSet의 메서드 본 HashSet과 달리 TreeSet은 정렬이 필요없다. 출력문: [4, 5, 7, 9] Set set = new TreeSet(); set.add(5); set.add(4); ..