"If there are n threads trying to access the same entity (as defined by the same primary key) then users will have serial access to that bean."
is not exactly accurate. I am only speaking for Weblogic, I don't know how it goes with other containers. This is what we thought happens before until out production server died because of Out of Memory Error. When we looked into what's happening in our servers, we saw that for each access to the same entity bean, a separate instance is being created. And since our entity beans have relationships to so many other beans, more and more beans get created.
For example, we have a Deal entity bean. This Deal has a 1-M relationship with say, Quotes, Contacts, Payments, Disbursements. So let's just get the Contacts. Out Contacts also has a 1-M relationship with Address. Each Address has a M-1 relationship with State and so forth and so on. Let's say our Deal has 10 Contacts. Each Contact has at least 2 Addresses. And each Address has 1 State which has 1 Country. When you get into the Deal screen you'll see that there are 1 deal + 10 contacts + 20 addresses + 20 states + 20 countries created. Another user comes in and choose the same Deal, the total count becomes doubled. And so forth and so on until some beans get passivated.
I don't know if I explained it very well but what we saw was that for each read/write entity bean you create, even though their of the same PK, an instance will be created. So what we did was we implemented the Read-Mostly Pattern
and that solved our problem a lot.