Every unique event creates a new thread.
Example:
local RunService = game:GetService("RunService")
local HB = RunService.Heartbeat
local Thread1
local Thread2
local Conn
Conn = HB:Connect(function()
Thread1 = coroutine.running()
Conn:Disconnect()
end)
Conn = HB:Connect(function()
Thread2 = coroutine.running()
Conn:Disconnect()
end)
wait()
print(Thread1 == Thread2) --> false