본문 바로가기

JAVA

(14)
JAVA 기초개념 (ThreadPool, ExecutorService, execute(), submit(), Runnable & Callable, 종료메서드 (shutdown(), shutdownNow(), awaitTermination()) Thread Pool 대여소 같은 역할 수행 예) 도서관, 대여소 Thread를 보유하고 있다가 순서에 따라 빌려주고, 사용 후 돌려 받는다. ExecutorService 객체를 통해 생성된다. 생성시에는 초기/ 코어/ 최대 스레드 수를 명시해준다. 생성된 작업은 submit(), execute()로 실행시킨다. execute( ) void 작업처리결과를 받지못함 작업처리도중 예외상황에 스레드를 종료하고 풀에서 스레드 제거 submit( ) Future 작업처리결과를 Future를 통해 반환 작업처리도중 예외상황에도 스레드를 종료하지않고 재사용 ThreadPool 사용해보기 public class ThreadPool { public static void main(String[] args) { Execut..
JAVA 기초개념 (Thread State, Control(sleep(), yield(), join(),notify(), wait()), 멈추기(stop flag, interrupt()), DemonThread) Thread State 생성부터 종료까지의 상태 값 우리는 getState()를 통해 현재 상태를 알 수 있다. New, Runnable, Terminated 상태 값 정도는 알고 있자! 상태 열거상수 설명 객체생성 NEW 스레드 객체 생성, start() 호출 전 실행대기 RUNNABLE 실행 상태로 언제든지 이동 할 수 있는 상태 일시정지 WATING 다른 스레드가 통지 할때 까지 기다리는 상태 TIMED_WATING 주어진 시간동안 기다리는 상태 BLOCKED 사용하려는 객체의 Lock이 풀릴때 까지 기다리는 상태 종료 TERMINATED 실행을 마친 상태 getState()사용해보기 public class Main { private static Thread.State state; public st..
JAVA 기초개념 (Multi Thread, Process, Thread, MainThread, Runnable Interface, Thread Class, setName(), getName(), Synchronized(동기화)) Multi Thread 어떤 program을 실행하게 해주는 원동력 대표적으로 main는 thread를 동작하게 해주는 method Process와 Thread간의 차이 가장 대표적인 차이는 바로 memory Share 여부 Process간에는 memory Share가 되지 않는다. Thread간에는 memeory Share가 된다 process는 하나 이상의 thread로 되어있다. Excel(Process) Word(process) 간에는 서로 상태가 공유되지 않는다. Word(Process) 내의 글 작성기능(Thread)과 자동완성 기능(Thread)은 서로 상태를 알고 있다. Main Thread main method는 main Thread를 생성한다. 자신을 위해 일할 work Thread를 ..
JAVA 기초개념 (JAVA .io, JAVA.nio, InputStream, OutputStream, Filesystem, Scanner, File.io, FileReader, flush, close, path..) JAVA I/O System 외부로부터의 Data를 다루는 것 System 안으로 또는 밖으로 이동하는 Data의 흐름을 Stream 이라고 한다. java.io package는 크게 InputStream & OutputStream으로 나뉜다. 바이트기반과 문자기반으로 분류 InputStream byte 기반 입력 스트림 최상위 클래스 하위클래스들은 각 특화된 분야가 있어 InputStream을 직접 사용하는 경우는 드물다. OutputStream byte 기반 출력 스트림 최상위 클래스 하위클래스들은 각 특화된 분야가 있어 OutStream 을 직접 사용하는 경우는 드물다. Scanner scanner클래스를 이용하면 java에서 사용되는 여러 데이터 쉽게 읽을 수 있다. Scanner scanner ..
JAVA 기초개념 (Collection Framework(자료구조) : List(ArrayList, Vector, LinkedList) / Set(HashSet) / Map(HashMap, HashTable)/ FIFO/LIFO) Collection Framework(자료구조) collection interface를 최상위로 하는 자료구조 interface 이다. List, Set, Map interface를 implements하여 각 collection으로 사용 데이터 추가, 삭제, 검색 방법 비슷하다. 그 이유는 최상위 collection과 하위의 List, Set, Map interface 구현하기 때문 인터페이스 구현시 장점은? 필수 method 강제할 수 있다. List Collection 1) Array List Array List는 인덱스로 객체를 관리한다는 점에서 Array와 유사 / 차이점은 array달리 인덱스 유연하다는 것 Array은 없어지지 않고 null상태가 되지만, array List는 인덱스가 1씩 당..
JAVA 기초개념 (Error/Exception(에러와 예외), 일반예외, 실행예외 (Runtime Exception), 예외의 처리(Handing), try-catch, throws, 사용자예외) 에러와 예외 에러(Error) : 문법이나 메모리 사용 문제로 실행에 문제가 생겨 발생하는 오류 예외(Exception): 사용자의 오 조작이나 외부 문제로 발생하는 오류 Error / Exception Exception 예외의 종류에는 일반예외와 실행예외가 있다. 외부 문제로 발생하므로 프로그램이 정지 하지 않도록 해야 한다. 예외 처리를 통해 exception 발생 시에도 프로그램이 정상 작동 하도록 한다. 모든 exception의 부모는 Exception class이다. 일반예외 (Exception) Compile time 에 실행 되는 exception, coding 중에 알 수 있다. JVM 에서 필요하다고 판단하면 자동으로 예외처리를 해 준다 실행예외 (Runtime Exception) Run..
JAVA 기초개념 (String, StringBuffer, StringBuilder) String 문자열은 byte와 char로 다룰수 있으며, 문자열(string)은 char의 배열(array)이다. 문자열의 공백을 없애거나, 다른 문자로 치환 할 수 도 있다. String이 char[]와 같다는 점에 착안하여 배열개념 이용한 기능들이 있다. String을 이용해서 다양한 활용을 할 수 있는 이유? 첫글자가 대문자, 다양한 생성자 오버로드가 있다. String 은 용량이 고정되기 때문에 문자열 추가 시 객체를 계속 생성 한다. => 이러한 객체의 남발을 막기 위해 StringBuffer 와 StringBuilder이 생김 String str = "abcdefg"; String strResult; int intResult; char chResult; boolean boolResult; /..
JAVA 기초개념 (추상화 (Abstract) , 인터페이스(Interface), Concrete, 익명객체 (Anonymous)) OOP 4대 특징 추상화 들어가기 전... Encapsulation: 다른 사용자에게 데이터 입/출력을 제한 한다. Inheritance: 나에게 없는 기능을 부모에게 받아서 내 것 처럼 쓴다. Polymorphism: 부모의 형태에 자식이 들어갈 수 있다. Abstraction : ? 추상화(Abstraction) 실체 간에 공통되는 특성 추출하고 불필요한 정보를 제거해 단순화 시키는 것 예) 지도 쓰는 이유 : 신속한 정보전달 규격이 필요한 이유: 추상화는 대부분 고급 프로그래밍에서 사용 추상클래스 추상클래스는 추상 메서드로 꼭 구현해야 하는 메서드 등의 규격을 만들 수 있다. 실체 클래스(concrete class) 는 추상 클래스(abstract class) 를 상속한다. 둘은 상속 관계 이기 때..