What's the duration of U lock
An UPDATE will read with U locks, releasing each U lock immediately if it is not going to X lock and change the row.  Profiler will show you this with the Lock:Acquired and Lock:Released events.

EG an update on a heap will IX lock the object, then for each page IU lock the page, then for each row U lock the row, and either release the U lock or convert to IX lock on the page, convert to X lock on the row and update it.  The page lock will be released when it's read the last row on the page.

use tempdb

select * 
into test 
from sys.objects

go

begin tran
update test set name = 'foo2'
where object_id = 9


Has a lock sequence like this:

Lock:Acquired                               59      8 - IX  5 - OBJECT  
Lock:Acquired   5:64                            59      7 - IU  6 - PAGE    
Lock:Acquired   5:64:0                          59      4 - U   9 - RID 
Lock:Released   5:64:0                          59      4 - U   9 - RID 
Lock:Acquired   5:64:1                          59      4 - U   9 - RID 
Lock:Released   5:64:1                          59      4 - U   9 - RID 
Lock:Acquired   5:64:2                          59      4 - U   9 - RID 
Lock:Released   5:64:2                          59      4 - U   9 - RID 
Lock:Acquired   5:64:3                          59      4 - U   9 - RID 
Lock:Released   5:64:3                          59      4 - U   9 - RID 
Lock:Acquired   5:64:4                          59      4 - U   9 - RID 
Lock:Released   5:64:4                          59      4 - U   9 - RID 
Lock:Acquired   5:64:5                          59      4 - U   9 - RID 
Lock:Acquired   5:64                            59      8 - IX  6 - PAGE    
Lock:Acquired   5:64:5                          59      5 - X   9 - RID 
Lock:Released   5:64:5                          59      0 - NULL    9 - RID 
Lock:Acquired   5:64:6                          59      4 - U   9 - RID 
. . . continue reading rows