🤔 < 스레드란? >

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

+ Recent posts