Today
-
Yesterday
-
Total
-
  • Thread
    Language/Java 2023. 11. 29. 00:01

    프로그램이 실행되면 OS로 부터 메모리를 할당 받아 프로세스 상태가 된다. 하나의 프로세스는 하나 이상의 thread를 가지게 된다. 프로세스의 실제 작업을 수행하는 단위는 thread이다.

    Multi Threading

    • 여러 Thread가 동시에 수행되는 프로그래밍.
    • Thread는 각각 자신만의 작업 공간을 가진다. (= Context )
    • 각 Thread 사이에서 공유하는 자원 Shared Resource이 있을 수 있다. ( static instance )
    • 여러 Thread가 자원을 공유하여 작업이 수행되는 경우 서로 자원을 차지하려는 race condition이 발생할 수 있다.
    • 여러 Thread가 공유하는 자원 중 경쟁이 발생하는 부분을 임계 영역 Critical Section이라고 한다.
    • 임계 영역에 대한 동기화 synchronized를 구현하지 않으면 오류가 발생할 수 있다.

    Java Code

    1. Thread 클래스 상속
    2. Runnable 인터페이스 구현 1
    3. Runnable 인터페이스 구현 2

    Thread 클래스 상속 구현

    Thread 상속 클래스 작성

    package thread;
    
    public class MyThread extends Thread {
        public void run() {
            int i;
            for (i = 1; i <= 200; i++) {
                System.out.print(i+ " ");
            }
        }
    }

    Thread 상속 구현한 클래스 실행

    package thread;
    
    public class ThreadStudy {
        public static void main(String[] args) {
            System.out.println(Thread.currentThread() + " start");
    
            MyThread t1 = new MyThread();
            MyThread t2 = new MyThread();
    
            // thread 실행 메서드
            t1.start();
            t2.start();
            System.out.println(Thread.currentThread() + " end");
        }
    }

    Runnable 인터페이스 구현 1 : 클래스에서 상속 받아 구현

    Runnable 구현 클래스 작성

    package thread;
    
    public class MyThread2 implements Runnable {
        @Override
        public void run() {
            int i;
            for (i = 1; i <= 200; i++) {
                System.out.print(i+ " ");
            }
        }
    }

    Runnable 구현한 클래스 실행

    package thread;
    
    public class ThreadStudy {
        public static void main(String[] args) {
            System.out.println(Thread.currentThread() + " start");
            
            MyThread2 runnable = new MyThread2();
            Thread t21 = new Thread(runnable);
            Thread t22 = new Thread(runnable);
            
            // thread 실행 메서드
            t21.start();
            t22.start();
            System.out.println(Thread.currentThread() + " end");
        }
    }

    Runnable 인터페이스 구현 2 : 메서드에서 instance

    package thread;
    
    public class ThreadStudy {
        public static void main(String[] args) {
            Runnable runnable = new Runnable() {
                @Override
                public void run() {
                    System.out.println("run");
                }
            };
    
            runnable.run();
        }
    }

    'Language > Java' 카테고리의 다른 글

    싱글톤 패턴  (0) 2023.11.30
    OkHttp3 라이브러리 사용 with 비동기  (0) 2023.11.29
    제네릭 Generic 프로그래밍  (0) 2023.11.28
    Maven , Gradle  (0) 2023.11.28
    SQLite  (0) 2023.11.25

Designed by Tistory / Custom by 얼거스