2013년 9월 13일 금요일

(자바프로그래밍강좌/자바쓰레드의 가비지 컬렉션)Thread의 Garbage Collection,쓰레드재사용

(자바프로그래밍강좌/자바쓰레드의 가비지 컬렉션)Thread의 Garbage Collection,쓰레드재사용)


오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)  


Thread의 Garbage Collection,재사용

자바에서 Garbage Collection은 더 이상 참조되지 않는 메모리를 모아 시스템에 되돌려 주는 것이라고 할 수 있습니다. 자바에서 객체, 배열은 모두 heap 이라는 메모리 공간에 저장되며 new 키워드를 이용하여 객체를 생성할 때 마다 heap의 메모리에 객체가 할당 됩니다. 물론 C++과는 달리 자바에서는 사용한 메모리를 반환하는 방법은 없으며 내부적으로 Garbage Collector 이러한 일을 하고 있습니다.

Garbage Collector는 낮은 우선 순위를 가지는 Background Process로 동작하면서 어떤 객체의 메모리를 반환해야 하는 것인지를 계속 검사하며 만약 반환 대상이 되는 사용되지 않는 객체를 찾았다면 소멸자를 수행 하는 것과 같이 필요한 몇 가지 일을 하고 객체를 해제하여 이 객체의 매모리를 heap 에 반환하게 됩니다.

자바에서 프로그래머가 코드에서 메모리를 반환하기 위해 보통 대상 객체에 null을 대입하고 System.gc() 메소드를 호출하는 방법을 주로 이용 하지만 System.gc()를 호출 했다고 가비지 컬렉션이 된다는 보장은 없으며 JVM이 한가하다면 Garbage Collection 일어나면서 객체들은 소멸되고 메모리는 반환 됩니다.

객체의 경우엔 참조를 잃어 버린다면 Garbage Collection되지만 쓰레드의 경우엔 객체에 대한 참조를 잃어 버리더라도 Garbage Collection 되지 않습니다. 즉 run 메소드의 실행이 종료 되었을 때 Garbage Collection 되죠^^

만약 쓰레드가 종료되더라도 Thread 객체에 대한 참조를 유지하고 있더라도 재사용은 불가능 합니다. 즉 Thread 객체는 종료되고 개체에 대한 참조를 잃어 버린 시점에 Garbage Collection 되는 자격이 생기며 실질적으로 Garbage Collection 되는 시점은 JVM에 의존하게 됩니다.


- Thread의 재사용

Thread 객체는 어떠한 경우라도 재사용 불가능 하며 Runnable Class를 이용하여 Thread를 만들었다면 재사용이 가능하며 Thread 객체를 다시 생성하는 것보다 Runnable 객체를 이용하여 재사용하는 것이 효율적이며 쓰레드 풀링과 같이 응용하는 경우에 유리 합니다.

Thread 객체는 Runnable 객체를 포함하고 있고 이미 생성된 Thread 객체의 Runnable 객체의 참조를 얻을 수 없으므로 Runnable 객체를 참고하기 위해서는 Thread 객체를 생성하기 전에 Runnable을 사용자가 생성하고 그 생성된 객체를 이용하여 Thread 객체를 생성해야 합니다.

public class ThreadTest {

    public static void main(String[] args) throws Exception {
           
            Thread thread1 = new MyThread();
            thread1.start();
            thread1.join();  //thread가 종료될때까지 main이 기다린다.
           
            //아래 부분의 주석을 풀면 오류남...
            //Thread를 상속받아 구현한 쓰레드는 재사용 불가
            //thread1.start();
            //thread1.join();         
           
           
        Runnable r = new MyRunnable();

        Thread rThread = new Thread(r);

        rThread.start();
        rThread.join();
       
        //재사용
        rThread = new Thread(r);
       
               
                //재사용
                Thread rThread2 = new Thread(r);
                rThread2.start();
                rThread2.join();
    }
}
   
/**
 * Thread를 상속받은 Thread
 * 재사용 불가, run 메소드가 종료되면 Garbage Collection 되므로 사용자가 변경 불가능
 *
 */
class MyThread extends Thread {
    public void run() {
        System.out.println("MyThread......");
    }
}

/**
 * Runnable을 구현한 Thread
 * 이 경우엔 run 메소드가 종료되면 Thread 클래스는 Garbage Collection 되지만
 * MyRunnable 클래스는 Garbage Collection 되지 않음
 */
class MyRunnable implements Runnable {
    public void run() {
        System.out.println("MyRunnable......");
    }
}


실전 개발자를 위한 오라클자바커뮤니티 추천 강좌 - 개인80%환급

Spring3.X, MyBatis, Hibernate실무과정

강좌명Spring3.X, MyBatis, Hibernate실무과정(평일야간)
오라클자바커뮤니티(www.oraclejavanew.kr) 추천 실전강좌
교재자체교재 or PDF 파일 제공
강좌 일정09월26일(목) ~ 10월15일(화)((평일야간) 19:00~22:00, 12일) 총 36시간
강의 장소[C강의장]구로디지털단지역2번 출구-> 미니스톱끼고 우회전 -> 100m 직진 후 골목길 끝에서 이마트방향 우회전 -> 50m 직진 후 우체국 옆골목으로 길건너서 직진 -> 150미터 직진 후 JnK 타워에서 우회전 -> 50미터 직진 후 우측에 코오롱빌란트2차 803호 (구로구 구로3동 222-8 코오롱디지털타워 빌란트2차 803호)
[약도보기]
수강절차- 강좌내용 확인
- 전화 또는 홈페이지(www.onjprogramming.co.kr)를 통한 수강지원 및 수강료 결제(무통장입금, 온라인 카드결제)
- 고용보험 가입자(재직자)인 경우 고용보험환급 관련 서류 제출
- 수강전 : 커리큘럼 및 장소에 대해 다시 한번 공지
- 교육 전 설문 작성(간단한 개발 경력, 수강 목적, 강좌진행방식 등)
- 강좌 수강
- 수강후 : 교육 후 설문 작성
수강료590,000원
[고용주환급]대기업:14만원 전후, 중소기업:187,047 원환급

[개인수강지원(개인환급)]정규직 472,000 ,비정규직:전액환급
대기업(상시근로자 300인 이상 대기업)은 개인환급 불가합니다.

재직자 내일배움카드 : 정부지원금 80% 자기부담금 20%
(구 능력개발카드 명칭이 내일배움카드로 변경 / 연간 총한도 200만원)


* 휴강 :법정공휴일
수강료
입금안내
- 온/오프라인 카드결제, 계좌이체(수강안내->입금안내 참조)
문의사항02-851-4790 번으로 연락 부탁 드립니다.
교육개요본과정은 자바 웹개발에서 가장 많이 사용되고 있는 자바기반 프레임워크인 Spring3.2를 학습하는데 스프링이 왜 도입되어야 하는지부터, 기본모듈구성, 아키텍처 DI, DL, IoC, 최근 개발모델의 핵심인 Spring AOP, AspectJ Annotation, 표현언어인 SpEL, Spring MVC, Spring MVC TEST Framework, Spring WebFlow, Spring JDBC, Spring Transaction등 개발에 필요한 부분을 체계적으로 실습을 통해 학습하며 SQLMapper인 MyBatis, Hibernate 까지 학습하는 Spring 최고의 교육 입니다.

[특징]
- 실무/실습에 근거한 이론 취득
- 단기간에 스프링 개발자로 양성
- 문답씩 수업으로 수강 효과 극대화
- 이론/실습 과제로 인한 개발력 UP
교육목표- Spring의 도입배경 및 아키텍처에 대해 이해한다.
(자바빈의 태동부터 EJB, 그리고 현재까지)
- Eclipse, Maven, STS 플러그인에 대한 이해
(개발환경 설정의 이해)
- Spring IoC(DI, DL)의 이해
(실습을 통한 setter,getter,constructor injection의 이해)
- Spring AOP의 이해
(실습을 통한 Spring AOP의 이해, AOP어렵지 않습니다)
- AspectJ Annotation에 대한 이해
(Spring의 AspectJ 지원 및 Annotation 대한 이해 by 실습)
- Spring Web MVC, JDBC의 이해
(실습을 통한 Spring MVC, JDBC의 이해)
- Spring Controller에 대한 이해
(간단한 Controller의 구현을 통한 MVC Font Contrller의 이해)
- Spring Web Flow에 대한 이해
(실습을 통한 Spring Web Flow 및 JSF에 대한 이해)
- SpEL에 대한 이해
(실습을 통한 Spring SpEL의 이해)
- Servlet3 비동기 요청에 대해 이해한다.
(실습을 통한 비동기 서블릿에 대한 이해)
- MyBatis Mapper에 대해 이해한다.
(실습을 통한 MyBatis 구성, 작동원리 이해)
- Hibernate Mapper에 대해 이해한다.
(실습을 통한 Hibernate 구성, 작동원리 이해)
- 실무 개발 환경에 적응력 UP
(Spring, MyBATIS 기반 게시판 작성)
교육대상- JAVA, JSP 개발자
- 자바개발은 오래 했지만 프레임워크에 대해 자신이 없는 개발자
- 단기간에 스프링을 박살 내고 싶은 개발자.
(스프링 혼자 공부하기는 어렵습니다!!)
선수학습- JAVA, JSP
 

Spring3.2J2EE Framework에 대한 흐름과 Spring Framework에 대한 이해
개발 환경 설정(Eclipse4.3 KEPLER, Tomcat7, Spring3.2 다운로드 및 설치)
Maven, STS 플러그인 설치
Spring IoC
DL(Dependency LookUp) &DI(Dependency Injection)
Dependency Pull, CDL(Contaxtualized Lookup)
Setter/Constructor/Mathod Injection
Spring 설정
Spring AOP 란 ?Code, Advice, JoinPoint, PointCut, Aspect, WeavingProxyFactoryBean
Annotation기반 AOP(AspectJ)
기타 Spring의 선언적 AOP 선언
Spring JDBC
Spring MVC
Spring Controller
Spring Webflow, JSF
Spring 표현언어 SpEL
Servlet3 비동기 요청처리
Spring3.2 Transaction 관리
Spring MVC TEST Framework
MyBatis/hibernate[MyBatis]
개요 및 소개
개발환경 설정 및 설치
Data Mapper란
sqlMapConfig 이해 및 환경설정
Spring, MyBatis 연동
SQL Map XML File 이해
SqlMapClient 이해
SQL의 실행(Insert/update/delete) 이해와 실습
고급 쿼리 사용방법의 이해와 실습
Spring MyBatis 응용예제 작성

[Hibernate]
Hibernate 소개
SessionFactory 설정
1:1, 1:다 매핑
Session Interface
Hibernate DML
Spring, Hibernate 예제 프로그램 작성
 

댓글 없음:

댓글 쓰기