1. 临界区:临界区是一种轻量级的同步机制,存在于用户态下,比如我们常用的Synchronized,它只能在同一进程中实现线程同步,无需用户态和内核态的切换。
    2. 互斥量:互斥量跟临界区很像,但它可以是存在于机器内部的指令Mutex,可以去解决不同进程间的线程竞争问题,但开销也比较大。
    3. 信号量:跟互斥量类似,不同的点在于它允许设置多个线程达到线程同步。
    4. 事件:用来通知线程有一些事件已发生,从而启动后继任务的开始。
    5. 读写锁:当我们的临界资源是读多写少时,可以使用这种方法,允许多个线程同时读,但是读和写互斥。
    6. 原子性操作:天然线程安全,无需加锁。