线程安全和线程兼容有什么区别?

mkU*_*tra 8 java concurrency multithreading thread-safety grpc

线程安全和线程兼容有什么区别?

  • 线程兼容是什么意思?
  • 线程兼容的用例是什么?

UPD: 我在StreamObserver 的 grpc 文档中找到了这个定义。

另外,我找到了特性化线程安全的链接,但对我来说仍然不清楚。

如果一个方法需要在同步块中,那意味着它只是线程不安全的?

Pet*_*art 6

线程安全意味着一个对象可以被多个线程同时使用并且仍然是正确的1

线程敌对意味着对象做了一些事情(改变静态、线程本地存储等),阻止它成为线程安全的。

线程兼容意味着不是线程安全的,但不是线程敌对的——所以为了满足线程安全,用户必须自己执行同步


1 但正确性的定义略有不同......

Java In Theory And In Practice根据类的规范对此进行了定义。

谷歌和维基百科的Geoff Romer将其定义为缺乏数据竞争。

我通常希望这意味着没有崩溃、死锁或其他意外。