链接:http://tutorials.jenkov.com/java-concurrency/index.html
学习小结
早期计算机只有一个cpu,且一次只能运行一个程序。后来出现了多任务的技术,意味着计算机可以在“同一时间”内运行多道程序(任务)。但它不是真正的同时运行,只是cpu被多道程序共享而已,cpu在程序之间依照一定方式轮流使用,给人一种同时运行的错觉。
后来又出现多线程,多线程可以在单处理器上实现,也可以在多处理器(或者多核cpu)中实现。多线程意味着一个终须中可以存在多个线程。而一般认为一个线程运行在一个单独的cpu上(只是可以这么理解,并不是说一个线程必定对应一个cpu,毕竟单处理器中也可以实现多线程)。如果一个程序中有多个线程,看起来就好像在这个程序中有多个cpu同时运行。这么假设,只是为了更好的理解多线程,更好的处理并发问题
如果不进行同步,多线程程序的行为是不可预测的。多线程“同时”对内存进行操作,会造成一些问题。这些问题在单线程程序中可能不会出现。也有些问题也不会出现单处理机中,因为单处理机中线程之间并不是真正的同时运行。
多线程(Multithreading)会出现并发问题(Concurrency),多任务(Multitasking)和分布式系统(distributed systems)也会出现并发问题,并且并发问题都是类似的。