面向构件的编程目前缺乏完善的方法学支持,构件交互的复杂性带来了很多问题,其中(36)问题会产生数据竞争和死锁现象
单选题
面向构件的编程目前缺乏完善的方法学支持,构件交互的复杂性带来了很多问题,其中(36)问题会产生数据竞争和死锁现象
A. 多线程
B. 异步
C. 封装
D. 多语言支持
答案:A
解析
答案:A. 多线程
多线程环境下,多个构件可能并发访问共享资源,若缺少同步,就会出现数据竞争;若线程互相持有对方所需锁并等待,就会形成死锁。因此该问题对应多线程。
- A 多线程:正确。并发共享状态是数据竞争和死锁的典型来源。
- B 异步:异步强调调用不阻塞,本身不等于多线程共享资源竞争,虽可能引入并发问题,但不如 A 直接。
- C 封装:封装用于隐藏实现、降低耦合,是构件设计原则,不会直接导致数据竞争或死锁。
- D 多语言支持:多语言互操作主要带来通信、类型映射等问题,不是数据竞争和死锁的直接原因。
考点延伸:Java 中可用 synchronized、ReentrantLock、JUC 并发工具保证原子性、可见性、有序性;死锁需满足互斥、持有并等待、不可剥夺、循环等待四个条件,排查可用 jstack。