《java并发编程实战》线程安全性定义?

在线程安全的定义中,最核心的概念就是正确性。如果对线程安全的定义是模糊的,那么就是因为缺乏对正确性的清晰定义。正确性的含义是:某个类的行为与其规范完全一致。**在良好的规范中,通常会定义各种不变性条件来约束对象的状态,以及定义各种后验条件来描述对象操作的结果。由于我们通常不会编写详细的规范,那么如何知道这些类是否正确呢?我们无法知道,但这并不妨碍我们在确信“类的代码能工作”后使用它们。这种“代码可信性”非常接近于我们对正确性的理解,因为我们可以将单线程的正确性近似定义为“所见即所得”。**在对“正确性”给出了一个较为清晰的定以后,就可以定义线程安全性:当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么就称这个类是线程安全的。

在看《java并发编程实战》中,看到了对线程安全性定义的一段话,第一反应:这是逐字翻译的吗?不变性条件(invariant)是什么意思呢??这句话:

“由于我们通常不会编写详细的规范,那么如何知道这些类是否正确呢?我们无法知道,但这并不妨碍我们在确信“类的代码能工作”后使用它们。这种“代码可信性”非常接近于我们对正确性的理解,因为我们可以将单线程的正确性近似定义为“所见即所得”。”
有大神对这句话说说自己的理解吗?


阅读 1.9k
1 个回答

没看过中文版

猜测 不变性条件 应该是invariant (不是immutable)

你可以当成是assertion

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题