And now i have a technical question... What would happen if you and other user are running the program at the same time with the same private keys but sending to different address? My prediction is a double spend...
Doble spend is impossible in the Bitcoin network.
If a node accepted a transaction into the mempool, so this node will reject an incoming transction with the same tx output.
It is possible that another node, that hasn't received the first transaction collects the second one as valid, In that case the nodes would keep their received transactions in their mempool until a valid block with one of this transactions has been created. As only one of these two transactions can be in the block, the node with the transaction that isn't in the block will be rejected as there is already a tx with that unspent tx output in the block.
You can read tis thread "[TESTED IT] Changing the transaction after broadcasting, what happens?" for further details:
https://bitcointalk.org/index.php?topic=5397102.0