diff --git a/homeassistant/core.py b/homeassistant/core.py
index 78ceb620e53f156c8fcbeb7c88d502a3ab9f2863..90b44e2069337ba8188a96dd55c18af80358c07b 100644
--- a/homeassistant/core.py
+++ b/homeassistant/core.py
@@ -505,12 +505,14 @@ class HomeAssistant:
 
         return task
 
-    def create_task(self, target: Coroutine[Any, Any, Any]) -> None:
+    def create_task(
+        self, target: Coroutine[Any, Any, Any], name: str | None = None
+    ) -> None:
         """Add task to the executor pool.
 
         target: target to call.
         """
-        self.loop.call_soon_threadsafe(self.async_create_task, target)
+        self.loop.call_soon_threadsafe(self.async_create_task, target, name)
 
     @callback
     def async_create_task(
diff --git a/homeassistant/helpers/discovery.py b/homeassistant/helpers/discovery.py
index b7db5ba69fafd8600db8aacd139503d5af85a121..7045966c529ddb92041006cea929cbb4953a5dc6 100644
--- a/homeassistant/helpers/discovery.py
+++ b/homeassistant/helpers/discovery.py
@@ -67,7 +67,10 @@ def discover(
     hass_config: ConfigType,
 ) -> None:
     """Fire discovery event. Can ensure a component is loaded."""
-    hass.add_job(async_discover(hass, service, discovered, component, hass_config))
+    hass.create_task(
+        async_discover(hass, service, discovered, component, hass_config),
+        f"discover {service} {component} {discovered}",
+    )
 
 
 @bind_hass
@@ -127,8 +130,9 @@ def load_platform(
     hass_config: ConfigType,
 ) -> None:
     """Load a component and platform dynamically."""
-    hass.add_job(
-        async_load_platform(hass, component, platform, discovered, hass_config)
+    hass.create_task(
+        async_load_platform(hass, component, platform, discovered, hass_config),
+        f"discovery load_platform {component} {platform}",
     )
 
 
diff --git a/homeassistant/helpers/entity.py b/homeassistant/helpers/entity.py
index eaac35286d99206a8b852ce537acaf9e0860a2c4..fd9c6bb260d71867951e6adf6a42c3d8076c9783 100644
--- a/homeassistant/helpers/entity.py
+++ b/homeassistant/helpers/entity.py
@@ -698,7 +698,10 @@ class Entity(ABC):
         If state is changed more than once before the ha state change task has
         been executed, the intermediate state transitions will be missed.
         """
-        self.hass.add_job(self.async_update_ha_state(force_refresh))
+        self.hass.create_task(
+            self.async_update_ha_state(force_refresh),
+            f"Entity {self.entity_id} schedule update ha state",
+        )
 
     @callback
     def async_schedule_update_ha_state(self, force_refresh: bool = False) -> None:
diff --git a/homeassistant/helpers/entity_component.py b/homeassistant/helpers/entity_component.py
index 0c43dddec604f36cd7db85b92b69ccb3f8736ab5..c79726684a297de852d339bdfa0a5ba122e43ac7 100644
--- a/homeassistant/helpers/entity_component.py
+++ b/homeassistant/helpers/entity_component.py
@@ -114,7 +114,9 @@ class EntityComponent(Generic[_EntityT]):
 
         This doesn't block the executor to protect from deadlocks.
         """
-        self.hass.add_job(self.async_setup(config))
+        self.hass.create_task(
+            self.async_setup(config), f"EntityComponent setup {self.domain}"
+        )
 
     async def async_setup(self, config: ConfigType) -> None:
         """Set up a full entity component.