【问题标题】:Confused about synchronization and thread safe ? java对同步和线程安全感到困惑?爪哇
【发布时间】:2016-03-27 18:36:36
【问题描述】:

实际上,对于网站或博客上关于同步和线程安全的一些解释,我有点困惑。我对不同类的核心 Java Api 或 Java 框架(集合)进行了一些研究。而且我经常注意到某些类是同步和线程安全的,这意味着一次只有一个线程可以访问代码。

但我需要一些精度:

  • 一个类同步所以它的线程安全?
  • 或者说同步和线程安全有两种不同的含义?

最好的问候

【问题讨论】:

标签: java performance synchronization thread-safety core


【解决方案1】:

一个类是同步的,所以它是线程安全的?

类不同步。而是同步一个方法或一段代码。

同步(使用synchronized)是使代码线程安全的一种方法。还有其他方法。

或者说同步和线程安全有两种不同的含义?

是的。它们有不同的含义。


而且我经常注意到某些类是同步和线程安全的,这意味着一次只有一个线程可以访问代码。

实际上,如果您“注意到”了这一点,您并没有注意!

使用synchronized 方法,只有一个线程可以在持有给定锁的同时访问代码;即你得到互斥。如果两个线程使用不同的锁,那么你不会得到互斥。

另外需要注意的是,仅仅使用synchronized 并不能保证线程安全。你需要以正确的方式使用它:

  • 线程需要在适当的对象/锁上同步
  • 线程需要在所有适当的代码中同步
  • 如果代码需要获取多个锁,则需要按照避免死锁的顺序获取锁。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多