Next Previous Up Contents
Next: Parallel Processing
Up: Table Data
Previous: Sequential Access

2.3.2 Random Access

If a table's isRandom method returns true, then it is possible to access the cells of a table in any order.

The most straightforward way to do this is using the getCell or getRow methods directly on the table itself (not on a RowSequence). These methods are supposed to be in general safe for use from multiple threads concurrently; however depending on the implementation that may be enforced in a way that slows down concurrent access, for instance using synchronization.

The preferred alternative in multithreaded contexts is to use the getRowAccess method to obtain a RowAccess object. A RowAccess can be used for random access within a single thread, in a way that may (depending on the implementation) avoid contention for resources.

Similar comments about whether to use the by-cell or by-row methods apply as in the previous section.

If an attempt is made to call these random access methods on a non-random table (one for which isRandom() returns false), an UnsupportedOperationException will be thrown.


Next Previous Up Contents
Next: Parallel Processing
Up: Table Data
Previous: Sequential Access

STIL - Starlink Tables Infrastructure Library
Starlink User Note252
STIL web page: http://www.starlink.ac.uk/stil/
Author email: m.b.taylor@bristol.ac.uk