Depends on your approach, an idiomatic way used in Spring Boot is to have a dedicated endpoint (perhaps they consider that if you a thread-per-request configuration, it shouldn't be blocked by anything).
But, if you are willing to have another process/thread running in parallel on a different port, you should consider the implications (how you wire this in your app's architecture).
Honestly health checks, as stated above can be made using metrics and then perhaps wired through a metrics server, which (if configured correctly), should point out soon enough if your service is encountering issues.
TLDR: Have atleast an endpoint to check, other solutions need to be treated on a case by case basis.