繁体   English   中英

对同步和线程安全感到困惑吗? 爪哇

[英]Confused about synchronization and thread safe ? java

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

但是我需要一些精度:

  • 一个类正在同步, 因此其线程安全吗?
  • 还是同步和线程安全有两个不同的含义?

最好的祝福

一个类正在同步,因此其线程安全吗?

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

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

还是同步和线程安全有两个不同的含义?

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


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

实际上,如果您“注意到”该信息,则说明您没有注意!

使用synchronized 方法时 ,只有一个线程可以在持有给定锁的同时访问代码。 也就是说,您会互相排斥。 如果两个线程使用不同的锁,那么您将不会相互排斥。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM