Java 并发编程学习(一):并发编程相关概念

什么是线程安全性?

当多个线程访问一个类时(例如执行对象的方法),这个类始终都能表现出正确、预期内的行为,那么可以称这个类是线程安全的。

什么是原子性?

如果对于某个操作或者某组操作,A线程在执行时,B线程看见A的执行状态为:A没执行或者A已经执行完了。满足这个条件的操作可以称为原子操作。

什么是竞态条件?

在并发编程中,由于不恰当的执行时序而出现不正确的结果,称为存在竞态条件。一种典型的竞态条件就是“先检查后执行”。在多线程并发的情况下,对共享变量进行先检查后执行的操作通常存在线程安全问题,出现问题的原因在于,检查时满足条件,而执行的时候条件已经不满足了。还有一种常见的竞态条件是:依据对象之前的状态来定义对象状态的转换,比如所对++i操作实际上是分三步来执行,Load i、i+1、Store i。可以发现,这两种竞态条件实际上都是因为操作不是原子性的。

什么时候需要考虑使用同步机制?

当程序逻辑存在被多个线程同时访问,并且逻辑中使用了共享的、可变的对象(不单指Java类实例,可以是一切变量)时,需要考虑使用同步机制保证并发时的正确性。

posted @ 2021-02-01 22:35  陈玉林  阅读(63)  评论(0编辑  收藏  举报