java 쓰레드 질문

ybg7955의 이미지

안녕하세요 자바 쓰레드 배운지 얼마안되서 질문드리는데요

예를 들어서
public static void main(String[] args){
SingleThread T1 = new SingleThread();
SingleThread T2 = new SingleThread();
SingleThread T3 = new SingleThread();
SingleThread T4 = new SingleThread();

T1.start();
T2.start();
T3.start();
T4.start();
}

이렇게 해서 쓰레드를 4개를 생성했다고 치면 일단 제가 배운바로는 쓰레드 4개가 동시에 실행되고 start()메소드에 따라서 ready 상태로 갔다가 스케줄러가 우선순위에 따라서 각 쓰레드의 run() 메소드를 실행시키는 이런 방식으로 알고 있는데요 그러면 지금 메인함수안에서 T1,2,3,4 순서대로 코딩을 했는데 그러면 이 코딩된 순서는 상관이없는건가요? 그니까 만약에 T4,2,1,3 이런순서로 코딩해도 지금상태랑 같은 건가 궁금합니다.

lleellee0의 이미지

어떤 쓰레드가 먼저 실행될 지 예측할 수 없다는 것에서 같은 상태라고 할 수 있습니다.
1, 2, 3, 4 순으로 코딩하는 것과 4, 2, 1, 3 순으로 코딩하는 것 중 어느 쓰레드가 반드시 먼저 실행된다고 보장할 수 없습니다.