在Java程序中,尝试使用System.getProperties()获取系统属性后,并通过setProperty方法添加一个自定义属性。在后续程序运行中,若多个线程并发地通过System.getProperty(String key)方法尝试读取该属性,且同时有线程尝试通过System.setProperties(Properties props)方法修改整个属性集合,下列描述中哪个选项最准确地描述了该过程的可能结果?

答案解析

A选项错误,System类本身并非完全线程安全,getProperties返回的Properties对象也不是线程安全的。多次修改,读取结果不确定。B选项错误,System.setProperties和 getProperty不会串行执行,可能读取到不同的值,ConcurrentModificationException是Properties类本身可能抛出的,并非完全不会发生,但多线程下发生几率不高。C选项正确,getProperties返回的Properties对象不是线程安全的,并发读写会引起数据不一致,可能读到旧值,新值,甚至因为线程竞争抛出ConcurrentModificationException异常。D选项错误,setProperties并非为每个线程创建独立副本,setProperty 和 setProperties都会直接影响全局唯一的属性集合,不互斥。因此,最准确的描述是C选项。
正确答案:C
随机推荐
开始刷题