본문 바로가기
JAVA-Spring

Thread

by Super Santj 2019. 8. 1.

프로세스 (process) => 현재 실행중인 응용프로그램의 실행단위

foreground process / background process

쓰레드 (Thread)

프로세스보다도 더 작은 실행 단위 이다. 즉 응용프로그램 내부에서 실행되는 최소 실행 단위이다.

IE(프로세스) 웹브라우저 => 특정 사이트에 접속

1) 홈페이지를 보여주는 역할, 문자, 동영상, 이미지등을 불러오는 역할

2) 여러개 존재하여 동시에 실행되는 것 처럼 보인다. 이것을 멀티 쓰레드 라고 한다.

이러한 창처럼 실시간으로 무언가를 뿌려주는것이 Thread의 일종이다.

또한 Thread의 역할을 해줄수있는 클래스가 존재하여 상속받아서 그 효과를 입힐수가 있다.

1.Thread역할을 해주는 쓰레드 클래스 존재(상속)(권장)

1)Thread클래스를 상속받음->run()때문에
2)run()작성->쓰레드의 기능을 부여
3)Thread객체를 생성->start()호출=>작동

2. Runnable 인터페이스를 상속받는 방법

**1)Runnable인터페이스를 상속받은 자식클래스를 작성
   2)Thread클래스의 객체를 생성
**3)Thread클래스의 객체를 생성할때 생성자의 매개변수로써 
   Runnable인터페이스를 상속받은 자식클래스의 객체를 넣어줘서 사용
   4)Thread클래스 객체의 start()호출

한개 이상의 쓰레드를 실행시킬때 동기화가 필요하는 경우가 있다.

Thread 동기화 => 싱글톤 패턴 => 객체를 하나만 생성할수가 있다. => 공유해서 사용하는 기법

여기서 동기화는

두개의 쓰레드가 하나의 데이터에 작업을 할때 하나의 쓰레드가 먼저 일을 다 처리할 동안 다른 쓰레드는 대기 상태로 유지할 수 있도록 해주는 기법 (ex 상담 -> 1인 상담 -> 대기)

쓰레드는 데이터를 공유할 수 있다.

동기화를 구현할땐

메소드명 앞에 synchronized 키워드를 써주면 된다. 이렇게되면

=> 메소드 자체가 설정 => 메소드 종료할때 기다려준다. => 다른 쓰레드는 대기상태에 존재 => 락을 거는 개념

트랜잭션 => commit()

2. 메소드 내부에 synchronized 예약어를 이용해서 특정 공유 객체를 설정
급여통장 => 공과금, 보험, 대출이자...-> 실시간으로 돈이 빠져 나간다.

이렇게 은행에서 돈이 빠져나갈수있도록 설정을 해놓을 수도있다.

싱글톤 패턴 => 객체를 하나만 생성하고 공유해서 사용하는 기법, 웹에서 사용하는 기법(메모리 절약 목적) 동시 접속을 효율적으로 사용하는 방법

인쇄 -> 프린터 -> 만약 28대 다수의 사용자가 => 프린터 한대를 (공유) => 여러명이 공유해서 사용가능함.

댓글