CoinJoin provides increased privacy for owners of bitcoin by breaking the heuristics used by chain analysis companies. This transaction obscures ownership of specific pieces of bitcoin (UTXOs). CoinJoin is distinct from mixing services in that CoinJoin operators never take custody of any funds. Users maintain control of their bitcoin at all times. Check out an example of a CoinJoin transaction on the blockchain here.
In order to construct a CoinJoin transaction, users cooperatively contribute inputs to a transaction and receive the same amounts of bitcoin as outputs, all in uniform amounts. For example, if 5 users input amounts of 1, 2, 3, 4, and 5 BTC, there will be five inputs totalling 15 BTC, and there will be 15 outputs, each worth 1 BTC. Since each input is of exactly the same amount, it is impossible to tell which 1 BTC outputs belong to which user.