我对于多线程是否提高效率的理解
多线程是否会提高效率?实际上多线程提高效率指的是提高cpu的利用率。
并行指的是三个人吃三个苹果,并发指的是一个人吃三个苹果。
多线程属于并发,并发指的是在多个线程上来回切换,在一个线程上做一点,再在另一个线程上做一点。多个线程之间来回切换,创造结束线程也会产生时间的消耗。那么单线程不会产生这类消耗,所以说单线程应该比多线程快么?
问题出现在这里,事实上线程运行时难免会碰到读取数据库,IO等情况。在这种情况下cpu不会继续往下执行,而是会等待读取数据库的操作执行完毕或者IO操作执行完毕才会继续往下运行。这个时候cpu处于空闲状态。(注:io,读取数据库等操作的同时CPU也可以进行数据处理的操作)所以cpu并没有得到充分的使用。而多线程则在一个线程进行等待的同时,另一个线程进行数据处理,所以多线程的效率比单线程的效率高就体现在了这里。也就是提高了线程的使用率。
个人见解,如有问题欢迎指出。