1. A method of executing a blocking task in a computing device, comprising: executing, via a processor of the computing device, a thread that performs the blocking task, wherein the blocking task defines a plurality of blocking constructs; executing a blocking construct of the plurality of blocking constructs defined within a body of the blocking task, wherein the blocking construct encapsulates a specific blocking activity and an associated notification handler; registering the associated notification handler with a runtime system of the computing device; performing the specific blocking activity encapsulated by the executed blocking construct; causing the blocking task to enter a blocked state; receiving an unblocking notification from an external entity; and invoking the registered notification handler in response to receiving the unblocking notification from the external entity.