<aside> 💡 동시에 여러 작업을 할 수 있는 소프트웨어
</aside>
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는 순서를 보장하지 않는다는 것을 알 수 있습니다.
여기선 로컬클래스를 이용했지만, 익명클래스와 람다표현식을 이용해서도 적용할 수 있습니다.