volatile与synchronized,volatile就是能看见,并不提供原子性操作,因此不能用来替代锁来保护多个线程同时修改变量时的一致性。即只可远观而不可亵玩焉。
synchronized 适用于需要原子性操作、多线程访问共享资源、互斥访问等需要精细控制的场景。即synchronized 关键字用于创建临界区,其中的代码块或方法具有互斥性,只允许一个线程进入,同时它还提供了原子性操作,确保在临界区内对共享资源的操作是不可分割的。这有助于确保多线程访问共享资源时的线程安全性,避免了竞态条件和数据不一致。