(D) is the answer. Threads can share the Code segments. They have only separate Registers and stack.
User level threads are scheduled by the thread library and kernel knows nothing about it. So, A is TRUE.
When a user level thread is blocked, all other threads of its process are blocked. So, B is TRUE. (With a multi-threaded kernel, user level threads can make non-blocking system calls without getting blocked. But in this option, it is explicitly said 'a thread is blocked'.)
Context switching between user level threads is faster as they actually have no context-switch- nothing is saved and restored while for kernel level thread, Registers, PC and SP must be saved and restored. So, C also TRUE.
Reference: http://www.cs.cornell.edu/courses/cs4410/2008fa/homework/hw1_soln.pdf