七周七并发模型-第二章

70 阅读1分钟

线程与锁

java使用的是线程与锁模型,线程与锁模型其实是对底层硬件运行过程的形式化。java之所以会有线程不安全的问题,也是因为这个原因。 1.竞态条件(对执行顺序敏感),编译器的静态优化,JVM的动态优化,硬件的乱序执行都可能导致执行顺序出错。 2.内存可见性(一个线程的修改对另一个线程不一定可见) 3.死锁。

优点

线程与锁模型最大的优点是适用面很广。它是其它并发模型技术的基础,同时也因为它更接近于"本质"-近似于对硬件工作的形式化-如果正确使用时,效率会很高。同时这个模型也可以被轻松集成到大多数编程语言中。

缺点

线程与锁模型没有为并行提供直接支持,这个模型最大的缺点在于无助,对于我们这些可怜的程序员,编程语言层面没有提供足够的帮助。

多线程编程的难点

多线程编程的难点不在于编程而在于测试,同时可维护性非常差。