java에서 스레드(Thread)란 무엇인가?
스레드를 사용하기 전 기존 자바에서는
car.open();
car.entrance();
이렇게 코드 두 줄이 있다고 하면
car.open()을 수행한 후에 car.entrance();를 수행하게 된다
즉
위 코드를 수행 완료해야 아래 코드를 수행할 수 있다
스레드를 사용하면 car.open()을 수행하고 car.open()이 끝나지 않았음에도
바로 car.entrance()를 수행하면서 아래 코드를 계속 수행하게 된다
그 말은
위 코드의 수행 완료여부와 상관없이 계속 코드들을 수행한다
이렇게 글로 써 놔도 이해가 잘 안될텐데
아래의 이미지를 보면 이해가 잘 될 것이다
스레드를 쓰기 전의 코드는 왼쪽의 블리츠크랭크와 같은데
상대를 끌어오는 스킬인 Q 스킬이 끝나기 전까지는
움직이거나 다른 스킬을 사용할 수 없다
즉 스레드를 사용하지 않은 경우에는
한 줄이 완전히 끝난 후에 다음 줄로 넘어가게 된다
반면 쓰레드를 사용한 오른쪽 아리의 경우에는
QWER을 순서대로 눌러주었는데
스킬의 완료 여부와 상관없이 다른 스킬을 계속 수행하는 것이 보인다
즉 스레드를 사용하면 한번에 여러 동작을 수행할 수 있다는 것!
이제 코드로 한번 알아보자
먼저 스레드를 사용하지 않은 일반 코드인데
String 타입의 배열 cmd에 Q,W,E를 넣어주고
Blitzcrank를 객체화 한 뒤 run 메소드를 수행해 주니
Q,W,E 순으로 코드가 진행되는 것이 보인다