EvenOddVariants – 第 2 部分

EvenOddVariants.java

本文是之前发布的 EvenOddVariants 一文的第二部分

本文以奇数和偶数编号生成为例,介绍了在两条或多条线程之间实现协作的各种方法。

本文使用 java.util.concurrent.locks 包来演示如何实现协作。
有以下四种方法:
1) 使用同步关键字,获取对常用资源的锁定。
2) 使用锁定接口,然后通过对接口调用锁定/解锁方法获取/释放常用锁定 [实现锁定的对象]。
3) 使用两个对象,并使用 wait() 和 notify() 方法在这两个对象和两条线程之间实现协作。
4) 使用两个锁定对象,然后获取与之相关的相应的条件对象,并使用 await() 和 signal() 方法在两个对象和两条线程之间实现协作。

PS:之前在介绍与使用锁定相反的用法时已提到过第三种方法 [见第 1 部分]。


有关编译器优化的更完整信息,请参阅优化通知
类别: