Thread : 메모리를 할당받은 프로세스에서 실질적인 작업을 수행하는 주체.
Process : "실행중인 프로그램" 을 의미.
Thread의 특징 :
"독립적"으로 일을 수행.
개념 :
공유자원을 어떤 스레드가 점유 하고 있을 때,
다른 스레드의 접근을 잠시 막아야만 한다.
이것을 "동기화" 라고 한다.
동기화 == synchronized
예시 1)
계좌
(결제를 만약 동시에 한다고 할때, 0.00000001초라도 빠르게 내 돈을 가져가면 다른 사람의 접근을 잠시 막는다)
(그렇지 않으면 내 계좌 잔고가 100만원인데, 동시에 총 1000만원어치를 결제하면 돈이 차감될 수는 없기에)
예시 2)
인터넷 쇼핑 구매시
이클립스에서 구현하기
상황 : 사람들이 공유 자원인 티켓을 구매하는 상황.
1. Thread 클래스를 상속받은 Person 클래스.
1. 티켓팅 클래스.
2. 공유자원 : int ticket = 2;
3. void pay() 메서드
메서드의 기능은 공유자원인 ticket이 0보다 크면 구매성공이 되고, 티켓을 1개 줄이라는 기능이다.
4. synchronized 를 붙혀줘서 티켓을 구매할 때 다른 객체(사람)이 동시에 접근하는 것을 막아 준다.
1. 위에 만든 Person 클래스에, 티켓팅 클래스의 pay메서드를 사용하기 위해서
2. 티켓팅 클래스의 객체를 생성 시켜준 모습.
3. thread.start()를 하면 run() 메서드를 수행하는 구조이기에
run() 메서드를 오버라이딩 해서 사용 한다.
=> 참조변수.pay();
1. Thread 객체를 3개를 생성하는 상황.
2. Thread 클래스 내부에 참조변수,String 타입의 변수를 매개변수로 받는 생성자가 있음..
3. 상속받은 Person 클래스를 객체 생성.
4. 참조변수.start()로 rum() 메서드 수행.
'Java (국비) > Java 이론' 카테고리의 다른 글
파일 입출력 간단 정리 2 (0) | 2023.05.22 |
---|---|
파일 입출력 간단 정리 (0) | 2023.05.22 |
스레드 (Thread) 간단 정리 (1) | 2023.05.22 |
예외와 예외처리 (0) | 2023.05.19 |
컬렉션 프레임워크 (집합 (Set)) (0) | 2023.05.19 |