并发:一段时间内,多个任务同时在执行
    并行:单位时间内,多个任务同时在执行

    内部锁:也称之为监视器锁, 内部锁是排他锁, 一个线程获取内部锁后 只有正常退出或者 调用该内置锁资源的 wait方法时,

    synchronized的内存语义

    进入 synchronized 块的内存语义是把在synchronized 块内使用到的变量从线程的工作内存中清除,这样在 synchronized 块内使用到该变时就不会从线程的工作内存中获取,而是直接从主内存中获取。
    退出synchronized块的内存语义是把在synchronized 块内对共享变量的修改刷新到主内存。

    Volatile 解决了内存可见性问题。

    使用锁的缺点:当一个线程没有获取到锁时,就会阻塞挂起,这会导致线程上下文切换和重新调度开销。
    volatile 只保证了共享变量的可见性,但为保证操作的原子性。

    CAS