new Thread().run()이 병렬로 실행되지 않는 문제

new Thread().run()이 병렬로 실행되지 않는 문제

TL; DR;

run대신 start를 사용한다

문제

Runnable run1 = new Thread();

Runnable run2 = new Thread();

run1.run();

run2.run();

위 코드에서 run2가 실행되지 않는다

환경 / 버전:

자바

에러 코드 :

없음

원인 :

run은 해당 쓰레드의 코드(run()메소드 안의 코드)를 실행할 뿐, 새로운 쓰레드를 실행하지 않는다.

start를 사용해야 쓰레드를 생성한다

추가적으로,

run과 start에는 다음 차이가 있다

run: run()메소드를 실행 // 내가 구현하는 메서드 // 여러번 호출 가능 // 새로운 쓰레드 흐름에서 실행됨

start: 새로운 쓰레드 실행후 run메소드 실행 // thread클래스에 정의된 메서드 // 한번만 호출가능 // 현재 쓰레드에서 실행됨

해결

run으로 교체

참조

Difference between Thread.start() and Thread.run() in Java. (tutorialspoint.com)

... 큰일났다. 면접 준비할 때 보다 바보가 되가고 있다

from http://prob-solv.tistory.com/12 by ccl(A) rewrite - 2021-11-06 15:27:42