Hi JS,
First of all, there are two storage implementations co-exist in H2, old "PageStore" and a newer one called "MVStore".
I won't speak for PageStore, since it's not in active development anymore, but it's concurrency is implemented as lock for the whole tree.
BTW, both storages use B-tree, and not B+ tree.
MVStore, on the other hand, as it is multi-version storage, does not have any locking at all, because it's modifications are copy-on-write, with non-blocking atomic updates of the tree root reference. Readers always proceed without any locks and see whatever tree version was at the time of tree root reference reading. Writers use optistic concurrency control and retry their operation if concurrent modification is encountered. Only in case of extremely contentious operations, when many update attempts would fail, writers will resort to a tree-wise update lock instead.
I hope that at this point you do realize already, that yes, "H2 database is concurrent".