学习使用Java线程进行并发编程,你应该了解:
- 可以运行多个独立的任务。
- 需要考虑到关闭这些任务时,可能出现的问题。
- 任务可能彼此之间在共享资源上互相干涉,互斥(锁)可以防止这种冲突。
- 如果任务设计的不够仔细,可能会出现死锁。
- 要处理很多任务,而且它们交织在一起,应用并发能更好更有效的使用计算机。
- 要能够更好的组织代码。
- 便于用户使用
- 等待共享资源时性能降低。
- 需要处理线程的额外资源消耗。
- 可能会导致不必要的复杂度。
- 可能产生一些病态行为,比如竞争、死锁和活锁(多个各自运行各自任务的线程使得整体无法完成)。
- 不同的平台导致的不一致性。比如竞争条件,你在某些机器上出现的很快,然而在其他机器上可能根本不会出现。
这就需要使用可用的加锁机制(比如synchronized关键字)。它们仅仅是一个工具,同时会引入潜在的死锁条件,所以要对它们有着深刻的理解。