现在,只要是高级编程语言,一般都支持多线程;只要公司面试,都会面试多线程。
最近,我也学习了点多线程,对其也有了点认识,这里也记录下。由于是自己的理解、总结(当然,是依据就是书本、前辈的经验),所以肯定会存在各种认识不到位,希望大家不吝赐教。再直接点:我就是犯贱、找喷!!!下面开始:
多线程,我觉得就是并行,并行的一种。多进程,也算并行。那么,多线程,对于多进程的好处在哪里呢?我觉得,主要就是“数据通信”:多线程,直接内存就可以实现线程间通信(比如队列);多进程,不得不使用socket、共享内存之类的方式。(当然,还有一点多线程的优势就是线程是轻量级的,但是,这个优势主要体现在启动的时候,对长期运行的系统,优势就不是那么大了)。线程间通信的效率比进程间通信要高;一般,线程间通信也比进程间通信简单。
那么,这里就涉及到多线程编程的主要难点所在:线程间通信。其实,线程间通信,就是“线程间数据共享”(当然,多进程的通信方式也可以用,但是不合适)。多个线程共享一片内存,那么必然要涉及到“锁”来保证访问数据的有效性。这个,就是多线程编程的主要要考虑的问题(我只的是多线程特有问题。多线程架构之类,其实其他系统也是要考虑架构的,不是特有的)。
以上就是我的观点:多线程编程,优势是“数据共享”,但同时也是难点。