为什么要用多线程
任何一项技术的出现都是为了解决现有问题。
之前的互联网大多是单机服务,体量小;而现在的更多是集群服务,同一时刻有多个用户同时访问服务器,那么会有很多线程并发访问。
比如在电商系统里,同一时刻比如整点抢购时,大量用户同时访问服务器,所以现在公司里开发的基本都是多线程的。
使用多线程确实提高了运行的效率,但与此同时,我们也需要特别注意数据的增删改情况,这就是线程安全问题,比如之前说过的 HashMap vs HashTable
,Vector vs ArrayList
。
要保证线程安全也有很多方式,比如说加锁,但又可能会出现其他问题比如死锁,所以多线程相关问题会比较麻烦。
因此,我们需要理解多线程的原理和它可能会产生的问题以及如何解决问题,才能拿下高薪职位。
进程 vs 线程
程序 program
说到进程,就不得不先说说程序。
程序,说白了就是代码,或者说是一系列指令的集合。比如「微信.exe」这就是一个程序,这个文件最终是要拿到 CPU 里面去执行的。
进程 process
当程序运行起来,它就是一个进程。
所以程序是“死”的,进程是“活”的。
比如在任务管理器里的就是一个个进程,就是“动起来”的应用程序。