Thanks to Jeffrey for the fantastic one, http://msdn.microsoft.com/en-us/magazine/bb985010.aspx
"The garbage collector scans the finalization queue looking for pointers to these objects. When a pointer is found, the pointer is removed from the finalization queue and appended to the freachable queue (pronounced "F-reachable")."
From the above the objects J,I,E are moved from Finalization Queue to fReachable Queue.
Im not clear about the transition of Finalization Queue to fReachable Queue.
What about the FIFO logic of Queue. How dequeue of object E done without dequeuing F?
Whether it is a Finalization Queue or Finalization list?
Kindly shed some light.