[Java] 스레드

devheyrin·2022년 8월 27일
1

JavaBasic

목록 보기
6/6

프로세스와 스레드

  • 프로세스 : 하나의 프로그램을 의미
  • 스레드 : 하나의 프로그램 안에 있는 여러 개의 실행흐름 단위를 의미

멀티 스레드

  • main + 플러스알파
  • 여러 실행흐름이 동시에 발생하는것
  • 장점 : 처리 속도가 빨라진다
  • 주의할 점 : 동기화 - 한 사람이 먼저 한 스레드를 잡으면 나머지는 대기

멀티 스레드 구현방법

  • Runnable 인터페이스를 구현하거나 Thread 클래스를 상속하고, run() 메소드를 오버라이딩한다.

Runnable 인터페이스 구현

  • run() 재정의

Thread 클래스 상속

  • run() 재정의

동기화 구현 방법

1. 메소드에 동기화 키워드 추가

public synchronized void withdraw(int money) {
		if(balance >= money) {
			try {
				Thread.sleep(1000); // 1초 대기 
			} catch (Exception e) {
				
			}
			balance -= money;
		}
	}
  • 비추하는 방법
  • 1개의 스레드만 이 메소드에 집입할 수 있다. 다른 스레드들은 먼저 진입한 스레드에서 메소드 호출이 종료될 때까지 대기한다.
  • 메소드 전체가 lock 이 걸리기 때문에 동기화가 필요한 부분 외의 코드까지 잠긴다.

2. 명령 동기화

  • 동기화 블럭 사용
  • this - synchronized 블록 내부의 명령을 의미
public void withdraw(int money) {	
		synchronized (this) {
			if(balance >= money) {
				try {
					Thread.sleep(1000); // 1초 대기 
				} catch (Exception e) {
					
				}
				balance -= money;
			}
		}		
	}
profile
개발자 헤이린

0개의 댓글