🤔 < 스레드란? >
Thread는 Process 내에서 실행되는 여러 흐름 단위를 말한다. 각각의 Thread는 독립적으로 작동하며, 여러 개의 스레드가 동시에 실행될 수 있다. 이를 통해 프로그램의 응답성을 향상시키고, 프로세서를 보다 효율적으로 사용할 수 있다.
예를 들어, 한 프로그램에서 파일을 다운로드하는 작업과 사용자 입력을 처리하는 작업이 동시에 진행되어야 한다면, 이 두 작업을 각각의 Thread에서 처리할 수 있다.
🌳 < 자바에서 Thread 사용하기 >
Java에서는 "Thread" 클래스를 직접 상속받거나, 'Runnalbe' 인터페이스를 구현하는 방식으로 스레드를 생성할 수 있다.
class MyRunnable implements Runnable {
public void run() {
// 스레드에서 실행할 작업을 구현
}
}
public class Main {
public static void main(String[] args) {
Thread t = new Thread(new MyRunnable());
t.start(); // 스레드 실행
}
}
🤔 < 동기화란? >
동기화는 여러 스레드가 동시에 공유 데이터에 접근하는 것을 제어하는 메커니즘이다. 이는 데이터 일관성을 유지하고, 동시 수정으로 인한 오류를 방지하는데 필요하다.
예를 들어, 두 개의 스레드가 동시에 같은 계좌에서 돈을 출금하는 상황을 생각해보면. 이 때 동기화가 되지 않으면, 두 Thread가 동시에 잔액을 확인하고 동시에 돈을 출금하게 되어, 실제 잔액보다 더 많은 돈이 출금될 수 있다.
🌳 < 자바에서 async 사용하기 >
자바에서는 synchronized 키워드를 사용하여 동기화를 구현할 수 있다. synchronized 키워드는 메소드 또는 블록에 적용할 수 있다. synchronized가 적용된 메소드 또는 블록은 한 번에 하나의 스레드만 접근할 수 있다.
class SharedResource {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
'Java' 카테고리의 다른 글
Java Garbage Collection (0) | 2023.06.07 |
---|---|
Assert.isTrue() (0) | 2023.05.15 |
Wrapper Class (0) | 2023.05.14 |
05.인스턴스 생성과 힙 메모리 (0) | 2023.04.23 |
04.객체의 속성은 멤버 변수로, 객체의 기능은 메서드로 구현한다. (0) | 2023.04.23 |