22. 배열 (Array 여관) -> 배열도 객체다.
   (1) 설명
  - 같은 타입(Type)의 객체 또는 기본자료를 저장하는 저장소로서, 생성될때 그 크기가
    고정되는 저장소 객체.
  
   (2) 선언
  Type 배열변수명[];
  ex) int is[], int[] is, int []is, int [] is, String str[].....

   (3) 생성
  -> new Type[저장소크기]
  ex) new int[5], new String[3]....

   (4) 배열 방의 default 값
  <1> 참조형
    - 방의 기본값  --> null

     <2> 기본형
    - 정수(byte, short, char, int, long) -> 0.0L
    - 실수(float, double) -> 0.01, 0.0
    - 불린(boolean) -> false

   (5) 초기화
  확보된 공간(방)에 데이터를 최초로 넣은것
  ex) strs[0] = "봄", strs[1] = "여름", ... , is[0]=100, ..

  (ex: 005day/ArrayTest.java)

   (6) 선언/생성
  Type 배열변수명[] = new Type[저장소크기];
  ex) String strs[] = String[3], int is[] = new int[2], ..

  (ex: 005day/ArrayTest2.java )


    
   (7) 선언 / 생성 / 초기화
  -> Type 배열변수명[] = {데이터1, 데이터2, 데이터3, 데이터4......};
  ex) int is[] = {10, 20, 30};
   String str[] = {"하나", "둘", "셋", "넷"};
 
  cf) 배열은 멤버변수로 선언하고 생성자나 메소드에서 생성초기화(={}) 할 수 없다.
  (ex: 005day/ArrayTest3.java)

   (8) 배열값의 형변환
  ex1) int i =30;
    short ss[] = {10, 20, (short)i};
  ex2) Object obj[] = {new String("감자"), new Object()};

  (ex: 005day/ArrayTest4.java)

   (9) 이차원 배열
  -> 일차원 배열을 하나의 데이터(배열요소)로 취급하는 배열

   (10) 삼차원 배열
  -> 이차원 배열을 하나의 데이터(배열요소)로 취급하는 배열
  (ex: 005day/ArrayTest5.java)

23. 쓰레드
   (1) 설명 : 프로세스를 구성하는 제어의 흐름

   (2) Process 와 Thread 의 차이
  <1> Process : 프로그램의 실행 단위
  <2> Thread : Process를 구성하는 작업 단위
  
   (3) 비유 : 고용인.
  ex1) 소리바다에서 다운로드를 받으면서 음악을 듣는 것
  ex2) word에서 입력과 동시에 오타를 처리하는 것
  ex3) 웹브라우저에서 다운로드 받으면서 웹서핑 하는 것
  ex4) Startcraft의 인물들, 배경음악이 동시에 나오는 것
  ex5) 식당 주인(계산) + 서빙(음식배달) + 주방장(음식생산)
 
   (4) 장점
  쓰레드는 경량프로세스라고 일컬어 질 정도로 가볍다.
  이유는 프로세스의 자원(resource)를 공유하기 때문이다.
  
   (5) Thread 를 생성하는 2가지
  <1> java.lang.Thread 클래스를 상속 받는 방법
   (ex: Thread1.java)


  <2> java.lang.Runnable 인터페이스를 상속 받는 방법
   (ex: Thread2.java)

   (6) 실행법
  쓰레드객체.start();

   (7) Thread 의 Priority (우선순위)
  <1> 설명
   Ready 상태의 쓰레드 중에서, 우선적으로 CPU를 점유할 수 있는
   쓰레드를 판별하기 위한 LEVEL값.
  <2> 범위 : 1~10
  <3> 상수
   (ex: Thread3.java)

   (8) Thread 의 LifeCycle (ppt참조)

   (9) 주요메소드
  <1> sleep();
  <2> join();
  <3> yield();

   (10) 쓰레드의 동기화
  <1> 설명
   두 개 이상의 쓰레드가 어떤 연산에 동시에 접근했을 때 그 연산에
   대한 값(데이타)의 무결성을 보장하기 위해서 수행 영역에 대한
   lock을 걸어주는 것.

   ex) i++; // 현재 i값은 0
    methodA() // 비동기 메소드
    {
   - 1단계 : 기존의 i값을 읽는다.
   - 2단계 : 그 값을 1 증가 시킨다.
   - 3단계 : 증가된 값을 i에 대입시킨다.
    } i == 2 //정답, 오류 : i == 1

  <2> 비유 : 화장실사용

  <3> 방법
   synchronized 예약어를 메소드나 어떤 영역(블럭)에 써주면 된다.

   ex1) public synchronized void methodA(){연산}
   ex2) public void methodA()
     {
      synchronized(this){연산}
     }
   cf) synchronized 로 감싸진 영역을 동기화 블럭이라하고 동기화 블럭에서는
    동시에 오직 하나의 쓰레드만이 작업을 수행 한다.
    (ex: 005day/Thread4.java)


   
   etc) 여러개의 역할별 쓰레드 생성
       (ex: OwnerThread.java)

Posted by Duritz

공지사항

Yesterday
Today
Total
05-18 14:19

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31