CoinJoin, also known as coin mixing, is an anonymization strategy used online to protect the privacy of cryptocurrency transactions. Users from multiple transactions are combined from into a single larger transaction and then the desired amount of currency is disbursed to every respective receiver using newly created addresses. This process requires multiple parties to jointly sign a smart contract, therefore mixing their coins in a new transaction. Despite the combination of the coins into a large pool, the recipients receive the same number of coins as originally intended, but from a new address. This obscures the exact amount being sent in the process.
To have a valid transaction, users are required to agree on a set of inputs to send and a set of outputs to pay. Each participant then must separately sign off on the transaction and the transaction is not accepted until all required signatures from the participants are provided. This means that if one participant does not find the transaction to be appropriate, the transaction will not be processes until the terms are renegotiated.
CoinJoin was first suggested in 2013 on a Bitcoin forum, which you can see here.