본문 바로가기

IT

[TCP/IP] 동기(Synchronous) 와 비동기(Asynchonous)

안녕하세요. 메로나입니다.

 

오늘은 작업 처리 방식 중 동기와 비동기를 공부하겠습니다.

 

동기 프로그래밍
  • 작업이 순차적으로 실행됩니다.
  • 하나의 작업이 완료된 후에야 다음 작업이 시작됩니다.
  • 코드의 흐름이 직관적이고 이해하기 쉬우며, 각 작업의 실행 순서가 보장됩니다.
  • 단, 시간이 오래 걸리는 작업이 있을 경우, 해당 작업이 완료될 때까지 프로그램이 대기하게 되어 전체적인 응답성이 저하될 수 있습니다.
public class SynchronousExample {
    public static void main(String[] args) {
        System.out.println("작업 1 시작");
        task1();
        System.out.println("작업 1 완료 후 작업 2 시작");
        task2();
    }

    public static void task1() {
        System.out.println("작업 1 실행");
    }

    public static void task2() {
        System.out.println("작업 2 실행");
    }
}
// 출력
작업 1 시작
작업 1 실행
작업 1 완료 후 작업 2 시작
작업 2 실행

 

비동기 프로그래밍
  • 작업이 독립적으로 실행됩니다.
  • 하나의 작업이 완료될 때까지 기다리지 않고 다음 작업을 진행할 수 있습니다.
  • I/O 작업이나 네트워크 요청과 같이 시간이 오래 걸리는 작업에서 프로그램의 응답성을 향상시키는 데 유용합니다.
  • 단, 코드의 복잡성이 증가하며, 작업 간의 의존성을 관리하는데 주의가 필요합니다.
public class AsynchronousExample {
    public static void main(String[] args) {
        System.out.println("작업 1 시작");
        CompletableFuture.runAsync(() -> task1());
        System.out.println("작업 1 진행 중 작업 2 시작");
        task2();
    }

    public static void task1() {
        System.out.println("작업 1 실행");
    }

    public static void task2() {
        System.out.println("작업 2 실행");
    }
}
// 출력
작업 1 시작
작업 1 진행 중 작업 2 시작
작업 2 실행
작업 1 실행

 

동기와 비동기 프로그래밍 차이점
특징 동기 비동기
처리 방식 작업을 순차적으로 처리하며, 이전 작업이 완료되어야 다음작업을 시작 작업을 독립적으로 처리하며, 다른 작업과 동시에 진행 가능
응답 시간 시간이 오래 걸리는 작업이 있을 경우 전체 프로그램이 대기 시간이 오래 걸리는 작업이 있어도 프로그램의 다른 부분은 계속 실행
코드 가독성 단순하고 직관적 복잡하며 관리가 필요
사용 예시 파일 읽기, 계산 작업 네트워크 요청, 데이터베이스 쿼리

 

오늘은 개발하면서 꼭 필수적으로 알아야할 작업 처리 방식을 공부하였습니다.

20000~