线程间的通讯主要是通过共享域和引用对象。这种形式的通讯很有效率,但是会导致两个可能的错误:线程混淆和内存一致性错误。同步工具能避免这样的问题。
然而,同步会引发线程争夺,线程争夺会发生在当两个或多个线程试图同时进入相同的资源时,这会导致JAVA运行线程的速度降低,甚至暂停它们的运行。饥饿和活锁是这种形式的线程争夺。
这一章节会讲到以下的主题:
- 线程混淆,讲解了当多线程进入共享数据时,错误是如何出现的。
- 内存一致性错误,讲解了内存的不一致映像导致的错误。
- 同步方法,讲解了一种能预防线程混淆和内存一致性错误的简单的做法。
- 不确切的锁和同步,讲解了一种更为广泛的同步做法,并且介绍了同步机制是如何将不准确锁作为基础的。
- 原子访问,讲解了不能被其他线程干扰的操作。
网友评论