-
15. Thread멋사 부트캠프/Java 프로그래밍 2025. 4. 14. 12:37
✅ 기본 정리
1) 직렬 처리 (순차 처리 / Sequential Processing)
- 하나의 작업이 끝나야 다음 작업 시작. CPU는 한 번에 한 가지 일만 처리함.2)
2) 병렬 처리 (병렬 프로세싱 / Parallel Processing)- 여러 작업을 동시에 처리. 여러 스레드 또는 프로세서가 동시에 일함.
✅ 기본 구문
// 동기화 기초 - synchronized 메서드 사용 public class e_SynchronizationBasic { public static void main(String[] args) throws InterruptedException { //람다식에서 외부 변수를 참조할 때 final 이어야 한다. final int[] count = {0}; Runnable incrementTask = () -> { for (int i = 0; i < 1000; i++) { // 2개의 스레드가 동시에 count에 접근하여 각각 1씩 증가시키려 할 때, // 실제로는 총 2 증가해야 하지만, 결과가 1만 증가할 수 있음. // 이러한 문제를 **Race Condition(경쟁 상태)**라고 하며, // 이를 방지하기 위해 **synchronized(LOCK)**을 사용하여 // 스레드가 순차적으로 접근하도록 만든다. synchronized (count) { count[0]++; } } }; Thread thread1 = new Thread(incrementTask); Thread thread2 = new Thread(incrementTask); thread1.start(); thread2.start(); //메인 스레드가 2개의 일반 스레드가 다 끝날때 까지 기다림. thread1.join(); thread2.join(); System.out.println("Final Count: " + count[0]); } }
✅
'멋사 부트캠프 > Java 프로그래밍' 카테고리의 다른 글
14. 파일 입출력 (0) 2025.03.19 13. Constructor (생성자 참조 구문) (0) 2025.03.14 12. Lambda (0) 2025.03.14 11. 익명 클래스 & Functional 인터페이스 (0) 2025.03.14 10. Annotation (0) 2025.03.14