请对比下 volatile 对比 Synchronized 的异同。

Synchronized 既能保证可见性,又能保证原子性,而 volatile 只能保证可见性,无法保证原子性。

ThreadLocal 和 Synchonized 都用于解决多线程并发访问,防止任务在共享资源上产生冲突。

但是!

ThreadLocal 与 Synchronized 有本质的区别

  • Synchronized 用于实现同步机制,是利用锁的机制使变量或代码块在某一时该只能被一个线程访问,是一种“以时间换空间”的方式。
  • 而 ThreadLocal 为每一个线程都提供了变量的副本,使得每个线程在某一时间访问到的并不是同一个对象,根除了对变量的共享,是一种“以空间换时间”的方式。

回复

共1条回复 我来回复
  • 迷失技术de小猪
    迷失技术de小猪
    稍等伙伴们,思考简介中~
    评论

    Synchronized 既能保证可见性,又能保证原子性,而 volatile 只能保证可见性,无法保证原子性。

    ThreadLocal 和 Synchonized 都用于解决多线程并发访问,防止任务在共享资源上产生冲突。

    但是!

    ThreadLocal 与 Synchronized 有本质的区别

    • Synchronized 用于实现同步机制,是利用锁的机制使变量或代码块在某一时该只能被一个线程访问,是一种“以时间换空间”的方式。
    • 而 ThreadLocal 为每一个线程都提供了变量的副本,使得每个线程在某一时间访问到的并不是同一个对象,根除了对变量的共享,是一种“以空间换时间”的方式。
    1个月前 0条评论
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载