Java多线程编程基础知识汇总
多线程简介 多任务 现代操作系统(Windows、Linux、MacOS)都可以执行多任务,多任务就是同时运行多个任务。例如在我们的计算机上,一般都同时跑着多个程序,例如浏览器,视频播放器,音乐播放器,Word办公软件等等,由于CPU执行代码都是一条一条顺序执行的,即时是单核CPU也可以同时执行多个任务,操作系统执行多个任务实际上就是轮流让多个任务交替执行。即使是多核CPU,因为通常任务的数量是远多于CPU的核数,所以任务也是交替执行的。 进程(Process) 在计算机中,我们把一个任务称为一个进程。浏览器就是一个进程,视频播放器是另外一个进程,音乐播放器也是一个进程,在某些进程内部还需要同时执行多个子任务。例如我们在使用Word时,在打字的同时需要进行拼写检查,还可以在后台进行打印,我们把子任务称为线程。 进程和线程的关系: 一个进程可以包含一个或多个线程(至少包含一个线程) 线程是操作系统调度的最小任务单位 如何调度线程完全由操作系统决定(程序自己不能决定线程何时执行,执行多长时间) 实现多任务的三种方法: 多进程模式(每个进程只有一个线程) 多线程模式(一个进程有多个线程) 多进程+多线程(复杂度最高) 多进程和多线程的对比: 创建进程比创建线程开销大(尤其是在Windows系统上) 进程间通信比线程间通信慢 多进程稳定性比多线程高(因为在多进程的情况下