Android面试——并发编程

  • 编写线程安全的并发代码,主要在于要对共享的可变状态访问操作进行管理。因为共享状态可被多条线程同时访问导致线程安全问题,可以通过同步手段,或者干脆状态不共享、不可变,就不会出现线程安全的问题。
  • 从使用同步手段角度考虑,有时不恰当的执行时序导致不正确的结果,可以通过锁和volatile来确保该变量的操作不被重排序(在没有同步的情况下,编译器、处理器以及运行时等都可能对操作的执行顺序进行一些意想不到的调整),比如递增变量出现的线程不安全,使用Atomic类将复合操作变为原子操作可以解决。
  • 从状态不共享角度考虑,对象逸出(没有安全的发布对象,就是某个不应该发布的对象被发布)导致的线程安全问题,可以通过控制方法域,或者线程封闭的方式解决。
  • 从状态不可变角度考虑,将对象域设置为final类型,此对象就是不可变的,然后通过volatile类型来发布不可变对象,可以达到线程安全的目的。
  • Java平台类库包含了丰富的并发基础构建模块,例如线程安全的容器类以及各种用于协调多个相互协作的线程控制流的同步工具类(Synchronizer)。ConcurrentHashMap、CopyOnWriteArrayList分别用于代替同步状态下的Map和List。

参考:

《Java并发编程实战》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值