返回章节

🔄 第7章测试:线程间通信

测试你对Java线程间通信机制的理解程度

1
关于volatile关键字的作用,以下说法正确的是?
解析:
volatile关键字主要保证变量的可见性和有序性,但不保证原子性。它确保一个线程对变量的修改对其他线程立即可见,并防止指令重排序。
2
Semaphore信号量的主要作用是什么?
解析:
Semaphore是一个计数信号量,用于控制同时访问特定资源的线程数量。它维护了一组许可证,线程在访问资源前必须获取许可证,访问完成后释放许可证。
3
CountDownLatch和CyclicBarrier的主要区别是什么?
解析:
CyclicBarrier可以重复使用,当所有线程到达屏障点后,屏障会重置并可以再次使用。而CountDownLatch是一次性的,计数器减到0后就不能重置。
4
管道通信(PipedInputStream/PipedOutputStream)最适合哪种场景?
解析:
管道通信主要用于一个生产者线程和一个消费者线程之间的数据流传输,提供了一种简单的流式数据传递机制。
5
Exchanger类的主要用途是什么?
解析:
Exchanger提供了一个同步点,专门用于两个线程之间交换数据。每个线程在进入exchange方法后会等待另一个线程到达,然后交换数据。
6
以下哪种原子变量操作是线程安全的?
解析:
AtomicInteger类的所有操作都是线程安全的,包括get()、incrementAndGet()、compareAndSet()等方法,它们都使用了底层的原子操作来保证线程安全。
0/6
加载中...
重新测试