ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.