对同步和线程安全感到困惑? java的

时间:2016-03-27 10:24:00

标签: java performance synchronization thread-safety core

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

但我需要一些精确度:

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

祝你好运

1 个答案:

答案 0 :(得分:0)

  

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

类未同步。而是同步方法或代码块。

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

  

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

是。它们有不同的含义。

  

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

实际上,如果你"注意到"那,你没注意!

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

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

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