进程
一个进程就是一个正在执行的程序(如 windows 系统中的 qq.exe、host.dll)。进程拥有独立的内存空间、系统资源,但是可以相互通信。
线程
线程是指在进程中一个个单独的任务控制流。多个线程(多线程)共享一个内存空间和系统资源。一个进程可以并发很多个线程,每个线程执行不同的任务,但是开销要比进程小得多,可被成为轻量级线程。
知乎上有个比喻:进程是火车,线程是每节车厢,但无论进程还是线程都是指 CPU 对程序工作时间段的描述
主线程
程序运行时至少有一个主线程,主要负责其他线程的启动、挂起、停止等操作。其他线程被称为子线程。
高并发
高并发经常与多线程同时提起,区别是高并发是系统运行的一种状态:短时间内处理多种资源、操作请求,如每年双十一0点千万人在线购物操作。多线程指的是完成任务的一种方法。
提高高并发方法
- 静态资源结合CDN来解决图片文件等访问
- 分布式缓存:redis、memcached等
- 消息队列中间件:activeMQ等,解决大量消息的异步处理能力
- 应用拆分: 一个工程被拆分为多个工程部署
- 数据库垂直拆分和水平拆分(分库分表)等
- 数据库读写分离,解决大数据的查询问题
- 利用 NoSql ,例如 mongoDB 配合 mysql 组合使用
- 建立大数据访问情况下的服务降级以及限流机制等
