UNABLE_TO_LOCK_ROW is highly fact-specific. You need to read through Salesforce Platform Record Locking and Concurrency, the linked Record Locking Cheat Sheet, and perhaps the Record-Level Locking section and surrounding chapters of Designing Record Access for Enterprise Scale to get a sense of what the structure of issues that cause this error looks like.
The short summary is that your code is performing operations in parallel that access the same records, either directly or indirectly, in a way that causes them to be locked. (The Record Locking Cheat Sheet provides a nice reference for events that cause locks).
Because Salesforce locks these records to serialize access to them, your code is encountering a species of synchronization problem. One parallel operation acquires the lock and holds it long enough that the other parallel operation throws an exception before the lock is released so that it can acquire it.
Solutions are, again, highly fact-specific. Because you mention multiple Queueables, candidate solutions would definitely include either (a) designing the Queueables so that they operate on entirely distinct sets of records (note that, per the Cheat Sheet, "distinct" here may include "having distinct parents" as well), or (b) designing the Queueables to run in sequence instead of in parallel.