说说多线程同步?

所谓线程间的同步实质是保证线程中共享变量的数据同步。

  1. volatile 关键字

    在get和set的场景下是可以的,由于get和set的时候都加了读写内存屏障,在数据可见性上保证数据同步。但是对于++这种非原子性操作,数据会出现不同步;

  2. synchronized

    对代码块或方法加锁,结合 wait,notify 调度保证数据同步

  3. reentrantLock

    结合 Condition 条件设置,在线程调度上保障数据同步

  4. CountDownLatch简化版的条件锁

  5. cas=compare and swap(set)

    在保证操作原子性上,确保数据同步

你可能感兴趣的:(说说多线程同步?)