1. 자바 Concurrent 프로그래밍 소개


Concurrent 소프트웨어

<aside> 💡 동시에 여러 작업을 할 수 있는 소프트웨어

</aside>

자바에서 지원하는 Cuncurrent 프로그래밍

자바 멀티쓰레드 프로그래밍

예제

public class App {
    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        myThread.start();

        //Anonymous class
        Thread runnable = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("Runnable Thread: " + Thread.currentThread().getName());
            }
        });
        //Lambda Expression
        Thread lambdaThread = new Thread(() -> System.out.println("Lambda Thread:" + Thread.currentThread().getName()));

        System.out.println("Hello: "+Thread.currentThread().getName());
    }

    //Thread 상속
    static class MyThread extends Thread {
        @Override
        public void run() {
            System.out.println("Thread: "+Thread.currentThread().getName());
        }
    }
}

[실행 결과]

Hello: main Thread: Thread-0

⇒코드의 실행 순서만 봐서는 Thread가 먼저 출력되야 할 것 같지만, 실제로 실행해보면 다르게 출력될 때도 있습니다. 이를 통해 Thread는 순서를 보장하지 않는다는 것을 알 수 있습니다.

여기선 로컬클래스를 이용했지만, 익명클래스와 람다표현식을 이용해서도 적용할 수 있습니다.