안녕하세요. 메로나입니다.
오늘은 작업 처리 방식 중 동기와 비동기를 공부하겠습니다.
동기 프로그래밍
- 작업이 순차적으로 실행됩니다.
- 하나의 작업이 완료된 후에야 다음 작업이 시작됩니다.
- 코드의 흐름이 직관적이고 이해하기 쉬우며, 각 작업의 실행 순서가 보장됩니다.
- 단, 시간이 오래 걸리는 작업이 있을 경우, 해당 작업이 완료될 때까지 프로그램이 대기하게 되어 전체적인 응답성이 저하될 수 있습니다.
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~
'IT' 카테고리의 다른 글
| [IT] 공인 IP와 사설 IP (0) | 2025.05.08 |
|---|---|
| [IT] 비대칭키(공개키)와 대칭키 (0) | 2025.03.23 |
| [TCP/IP] 멀티플렉싱(Multiplexing) (0) | 2025.02.10 |
| [TCP/IP] 인터넷의 주소 체계 (0) | 2025.02.05 |
| [TCP/IP] CPU 데이터 저장 방식과 네트워크 통신 (0) | 2025.02.04 |