JAVA
-
Java | Thread (3) Synchronization 동기화JAVA/JAVA 2020. 2. 11. 17:06
Synchronization 동기화 하나의 자원을 여러 태스크가 사용하려고할 때 한 시점에서 하나의 태스크만 사용할 수 있도록 하는 것 쉽게 얘기하면 A, B 스레드가 한 공간에서 동시에 작업을 하려고할 때 A 스레드의 작업이 끝날 때까지 B가 기다려주는 것(반대의 경우도 마찬가지) 대부분의 응용 프로그램에서 다수의 스레드가 공유할 수 있는 영역이 요구됨 공유하는 부분은 상호 배타적으로 사용되어야 함 ex) 좌석 예매 시스템 판매처가 2곳 이상일 때 동기화가 되지 않는다면 같은 좌석을 여러 명의 사람에게 판매하는 경우가 생김 DB연동시 많이 사용(조회, 수정, 삭제) 트랜잭션과 연관이 있음(commit, rollback) Critical Section 임계 영역 상호배타적으로 사용되는 공유 영역 자바는 ..
-
Java | Thread (2) Thread 생성 & Multi ThreadJAVA/JAVA 2020. 2. 10. 17:38
Thread 생성 ①_Thread 클래스 상속 (권장) Thread 클래스 상속: start() 메소드를 사용하기 위함 run() 메소드 작성: 스레드가 실행할 기능 작성 스레드 객체 생성 start() 메소드로 스레드 실행 예제 import java.lang.Thread; public class MultiThread extends Thread { // 생성자 public MultiThread(String s) { // 부모 생성자 호출 super(s); } // Thread 클래스를 상속받아서 run() 구현 public void run() { // 실시간으로 데이터 출력, 저장, 계산 etc. // a ~ z까지 출력하는 반복문 for (char i = 'a'; i 1) { // "is Running..
-
Java | Thread (1) 개요JAVA/JAVA 2020. 2. 10. 17:26
Thread 스레드 응용 프로그램 내에서 실행되는 최소 실행 단위 하나의 프로그램이 동시에 여러 개의 일을 수행할 수 있도록 함 순차적으로 동작하는 문장들의 단일 집합 경량 프로세스, 여러 개가 모이면 프로세스 형성 자바는 스레드를 지원하기 위해 java.lang.Thread 클래스 제공 톰캣 서버에서 쓰레드 단위로 요청을 처리함 Thread 종류 사용자 정의 스레드: Thread 클래스를 상속받거나 Runnable 인터페이스를 구현해서 사용자가 직접 스레드를 생성하고 사용하는 것 메인 스레드: main() 메소드를 호출해서 실행하는 역할을 하는 기본 스레드 Thread 활용 영역 채팅 프로그램 게임 주식 CPU 사용 정보 출력 Process 현재 실행중인 응용 프로그램의 최소 실행 단위 foregrou..
-
Java | Generic (2) <?> & <T extends Class> & <? super Class>JAVA/JAVA 2020. 2. 10. 17:14
메소드 매개변수의 자료형에 사용되는 제너릭 의 줄임 표현 어떤 자료형의 객체도 매개변수로 받겠다는 의미 Unbounded WildCard라고 알려져 있음 예제 3개의 List 컬렉션을 생성하고 하나의 정적 메소드로 각각의 값을 출력하는 프로그램 작성 package j200210; import java.util.*; public class WildTest { public static void main(String[] args) { // List는 인터페이스이기 때문에 ArrayList 생성 후 Upcasting 이용 List list = new ArrayList(); list.add("test1"); list.add("test2"); list.add("tes..
-
Java | Generic (1) <T>JAVA/JAVA 2020. 2. 10. 17:04
Generic Generic Programming: 어떤 값이 하나의 참조 자료형이 아닌 여러 참조 자료형을 사용할 수 있도록 프로그래밍하는 것 여러 개의 참조 자료형을 사용할 수 있도록 할 수 있고, 특정 자료형만 사용할 수 있도록 제한할 수도 있음 참조 자료형이 변환될 때 이에 대한 검증을 컴파일러가 하므로 안정적임 컬렉션 프레임워크도 많은 부분 제너릭으로 구현 배경 컬렉션에는 모든 자료형이 Object형으로 변환되어 저장되기 때문에 저장된 데이터를 불러올 때 자료형을 각각 지정해주어야 하는 문제가 발생 따라서 처음부터 저장할 자료형을 지정함으로써 편의성을 추구 특징 특정 자료형의 값만 입력 받아서 저장, 조회, 계산, 출력을 가능하게 함 멤버 변수, 메소드 매개변수에도 제너릭 부여 가능 기본 자료형..
-
Java | Iterator & EnumerationJAVA/JAVA 2020. 2. 8. 18:03
Iterator, Enumeration 컬렉션의 구조가 다르다 할지라도 공통으로 자료를 검색할 수 있는 기능을 제공하는 인터페이스 자료 구조를 A에서 B로 바꾸면 출력문까지 전부 수정해야하는데 데이터 검색 방식을 표준화함으로써 코드의 재사용이 가능해짐 컬렉션 자료형이라면 자료구조에 관계없이 사용가능하지만 Iterator / Enumeration을 반환하는 메소드가 있는지 확인이 필요함 Iterator 반복자라는 뜻을 가진 인터페이스로 컬렉션에서 자료를 얻어오는데 사용 Collection 인터페이스를 구현한 모든 컬렉션 클래스에서 사용 가능 Enumeration의 기능이 확장된 것으로 jdk 1.2부터 제공됨 Iterator 메소드 메소드 설명 boolean hasNext() iterator가 요소를 가지..
-
Java | Map_HashMapJAVA/JAVA 2020. 2. 8. 17:46
MAP key - value쌍(pair)으로 된 자료들을 관리하는 데 유용한 기능을 제공하는 인터페이스 Hashtable Vector와 마찬가지로 멀티스레드를 위한 동기화 제공 멀티스레드 환경이 아니라면 HashMap을 사용하는 것이 권장됨 HashMap Map 인터페이스 구현 클래스 중 가장 많이 사용하는 클래스 HashMap 메소드 메소드 설명 V put(K key, V value) Map 인터페이스 객체에 key-value 저장 V get(Object key) key 와 짝지어진 value 반환 Collection values() 해당 map에 포함되어 있는 value들을 Collection view로 반환 예제 package j200207; import java.util.*; public..
-
Java | List_ArrayList & LinkedList & VectorJAVA/JAVA 2020. 2. 8. 17:39
List 순차적인 자료를 관리하는 데 사용하는 인터페이스 요소의 중복을 허용함 ArrayList 객체 배열을 구현한 클래스 컬렉션 인터페이스와 리스트 인터페이스를 구현 객체 순서를 기반으로 순차적으로 자료를 관리하는 프로그램 구현시 사용 요소의 개수에 따라 ArrayList의 크기가 자동으로 조정됨 배열의 0번 인덱스부터 순서대로 요소가 저장됨 동기화가 제공되지 않음 내부적으로 데이터를 배열에서 관리하며 데이터 추가/삭제시 임시 배열을 생성해서 데이터를 복사함 대량의 자료를 추가/삭제하는 경우 그만큼 데이터 복사가 일어나기 때문에 성능이 저하될 수 있음 요소마다 인덱스를 가지고 있기 때문에 데이터 검색시에는 유리함 ArrayList 생성 ArrayList 배열 이름 = new ArrayList(); ※ ..