The isolation level determines how long a read lock is held, except for a few exceptions. One exception is UR, which means no locks are held, and existing locks are ignored by the SQL select run with UR.
Update locks are held until a commit takes place, regardless of isolation level.
For maximum concurency of most applications, use CS. This will release the row lock on a read when the cursor moves off the row and DB2 moves to the next row (if using cursor processing).
If you need the result set to remain consistant while the select statement is processing the rows in your query, you may need RS, which holds the read locks until the SQL select statement is finished.
If you need to read the same data more than once in a unit of work and it must be the same each time, then use RR, which hold the read locks until a commit.