본문 바로가기

Java

(9)
[Java] 스레드, 멀티스레드에 대한 공부 스레드 프로세스 내에서 실행되는 실행 단위이다. 이전 글을 보면 더 쉽게 알 수 있다.멀티 스레드한 프로세스 내에서 여러 스레드가 실행 단위를 나누어 실행되는 것을 의미한다.  자바 프로그램을 돌리면서 1개의 스레드만으로 여러 작업을 동시에 할 수 없다. 이에 자바에서는 여러 스레드를 만들어 실행시키는 방식으로 발전해 왔다. 이를 멀티 스레드라고 한다.스레드의 상태스레드는 여러 가지 상태를 가지고 있다. New : 스레드 객체가 생성되었지만, start() 메서드가 호출되지 않은 상태이다.Runnable : 스레드가 실행 중이거나 실행될 준비가 된 상태이다.Blocked : 스레드가 락을 기다리는 상태이다.Waiting : 스레드가 다른 스레드의 특정 작업이 완료되기를 기다리는 상태이다.Timed Wai..
[Java] 제네릭에 대한 공부 제네릭을 공부하기 전에 다형성에 대해서 알아야 한다. 다형성에 대해서 모른다면 이 글을 참고 하도록 하자.이제 다형성을 알고 있다고 생각하고 제네릭에 대해서 설명하겠다. 제네릭이란?클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법이다.이렇게만 보면 이게 무슨 소리지? 또는 어떻게 이게 가능하지?라는 생각을 하게 된다. ArrayList list=new ArrayList();위 코드를 보면 Integer을 감싸고있는 가 사용한 클래스를 제네릭 클래스라고 한다. public class ExGeneric{ private T t; public void setT(T t){ this.t=t; } public T getT(){ return t; }}다..
[Java] 예외처리에 대한 공부 예외(Exception)란 개발자가 구현한 로직에서 발새한 실수나 사용자의 영향에 의해 발생한다. 오류와 달리 미리 예측이 가능하여 상황에 맞게 예외처리를 해야 한다.  오류(Error)란 시스템이 종료되어야 할 수준의 상황과 같이 수습할 수 없는 심각한 문제를 의미한다. 미리 예측이 불가능하여 방지할 수 없다. 예외 계층체크 예외애플링케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다. Exception과 그 하위 예외는 모두 컴파일러가 체크하는 체크 예외이다. RuntimeExceptiond을 제외한 모든 예외는 체크예외이다. 언체크 예외(런타임 예외)컴파일러가 체크하지 않는 언체크 예외이다. RuntimeException과 하위 언체크 예외를 모두 런타임 예외라고 한다. 예외 처리 란? 예기치..
[Java] 다형성에 대한 공부 다형성(Polymorphism)하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미한다. 클래스가 상속 관계에 있을 때 나타나는 성질이다.public class Car { public void carMethod(){ System.out.println("자동차입니다."); }}public class OilCar extends Car{ public void oilCarMethod(){ System.out.println("기름차입니다."); }}위 코드는 OilCar가 Car를 상속하는 코드이다.public class PloyMain { public static void main(String[] args) { System.out.println..
[Java] 상속과 구현에 대한 공부 상속 관계 객체 지향 프로그래밍의 핵심 요소 중 하나로, 기존 클래스의 메서드를 새로운 클래스에서 재사용하게 해 준다. extends 키워드를 사용하며 하나의 대상만 선택할 수 있다. 부모 클래스 상속을 통해 자신의 필드와 메서드를 다른 클래스에 제공하는 클래스 public class Animals { public void sound(){ System.out.println("소리를 냅니다."); } } 자식 클래스 부모 클래스로부터 필드와 메서드를 상속받는 클래스 public class Eagle extends Animals { public void fly(){ System.out.println("날아 갑니다."); } } eagle이 Animals를 상속받는다. public class Bear exte..
[Java] Garbage Collector 대한 공부 Garbage Collector프로그램이 동적으로 할당했던 메모리 영역(Heap) 중 사용하지 않는 영역을 탐지하여 해제하는 기능이다.public class Main{ public static void main(String[] args){ User user=new User("홍길동","20") user=new User("김철수","25") }}위 코드를 보면 user는 처음에 User 객체가 생성되고 '홍길동'을 참조하고 있다. 하지만 다음줄이 실행되면서 '김철수'를 참조한다. 이때 참조하지 않는 '홍길동'이 GC의 대상이 된다.  GC에 과정으로 Mark and Sweep있다. 처음에는 GC가 Stack의 모든 변수를 스캔하면서 객체가 참조하고 있는 변수를 Marking ..
[Java] JVM의 Heap, Stack구조에 대한 공부 자바 메모리 구조에 대한 공부를 하면서 Heap과 Stack 영역에 대하여 아주 간단하게 지나갔는데 자세하게 공부하겠다.위 그림(Runtime Data Area 영역)에서 JVM stack과 Heap의 대해 공부하겠다.Heap영역1. 프로그램을 실행하면서 생성한 모든 객체가 저장된다.2. 주기적으로 GC가 제거하는 영역이다.위 그림은 자바 7 이전과 8 이후의 JVM 구조이다. 위 그림처럼 Heap은 영역이 나누어지는데 이는 GC이 Heap을 효율적으로 삭제하기 위해서 3가지 영역으로 나누어진다. New/Young 생명 주기가 짧은 객체를 GC 대상으로 하는 영역 Edennew를 통해서 생성된 객체가 위치한다. 정기적인 GC후 살아남은 객체들은 Survivor로 이동한다.survivor1 / surviv..
[Java] 자바 메모리 구조에 대한 공부 (Heap,Stack,Method) jvm 영역에 대해서 공부를 했다. 공부를 하면서 자바 메모리 구조에 대하여 공부하겠다. 간단하게 Runtime Data Area를 다시 보면 위 그림과 같다. 여기서 Heap, Stack, Method의 구조와 영역에 대해서 공부할 것이다. 일단 자바에 변수에 대해서 알아야 한다. 자바의 변수는 아래 코드와 같이 나누어 진다. public class Shop{ public static int count = 10; // 클래스 변수 public int inventory = 100; //인스턴스 변수 } public class Main { public static void main(String[] args) {//매개 변수 //지역 변수 int wieght = 20; Shop sh = new Shop();..