의문점 공부하기/📌 Java

📌 스레드 풀에서 submit()과 execute()의 차이는 ?!?!?

아리빠 2023. 8. 1. 15:04

우선 submit() execute() 메서드는 스레드 풀에서 작업을 처리하는데 사용되는 메서드


작업 처리 결과 반환: 

submit() 메서드는 작업 처리 결과를 받을 수 있도록 Future 객체를 반환

submit()을 사용하면 작업의 결과를 추출하거나 작업이 완료되었는지 확인할 수 있다. 예를 들어, 작업이 어떤 값을 계산하고 그 값을 반환한다면, submit() 메서드는 그 값을 Future 객체로 받을 수 있다.

반면, execute() 메서드는 작업 처리 결과를 반환하지 않는다!

 


예외 처리: 

execute() 메서드는 작업 처리 중에 예외가 발생하면 해당 스레드가 종료되고 스레드 풀에서 제거된 후, 새로운 스레드가 생성되어 다른 작업을 처리한다. 이로 인해 execute() 메서드는 예외가 발생하면 해당 스레드를 종료하고 새로운 스레드를 생성하는 오버헤드가 발생한다.

반면, submit() 메서드는 작업 처리 중에 예외가 발생해도 스레드가 종료되지 않고 다음 작업에 재사용되는데, 이는 작업 처리 속도를 향상시킬 수 있음