1、什么是进程?什么是线程?

  1. 进程是一个应用程序(1个进程是一个软件)。<br /> 线程是一个进程中的执行场景/执行单元。<br /> 一个进程可以启动多个线程。<br />

2、对于java程序来说,当在DOS命令窗口中输入:

  1. java HelloWorld 回车之后。<br /> 会先启动JVM,而JVM就是一个进程。<br /> JVM再启动一个主线程调用main方法。<br /> 同时再启动一个垃圾回收线程负责看护,回收垃圾。<br /> 最起码,现在的java程序中至少有两个线程并发,<br /> 一个是垃圾回收线程,一个是执行main方法的主线程。<br />

3、进程和线程是什么关系?举个例子

  1. 阿里巴巴:进程<br /> 马云:阿里巴巴的一个线程<br /> 童文红:阿里巴巴的一个线程<br /> <br /> 京东:进程<br /> 强东:京东的一个线程<br /> 妹妹:京东的一个线程<br /> <br /> 进程可以看做是现实生活当中的公司。<br /> 线程可以看做是公司当中的某个员工。
  2. 注意:<br /> 进程A和进程B的**内存独立不**共享。(阿里巴巴和京东资源不会共享的!)<br /> 魔兽游戏是一个进程<br /> 酷狗音乐是一个进程<br /> 这两个进程是独立的,不共享资源。
  3. 线程A和线程B呢?<br /> java语言中:<br /> 线程A和线程B,**堆内存和方法区**内存共享。<br /> 但是**栈内存独立**,一个线程一个栈。<br /> <br /> 假设启动10个线程,会有10个栈空间,每个栈和每个栈之间,<br /> 互不干扰,各自执行各自的,这就是多线程并发。<br /> <br /> 火车站,可以看做是一个进程。<br /> 火车站中的每一个售票窗口可以看做是一个线程。<br /> 我在窗口1购票,你可以在窗口2购票,你不需要等我,我也不需要等你。<br /> 所以多线程并发可以提高效率。
  4. java中之所以有多线程机制,目的就是为了提高程序的处理效率。

4、思考一个问题:

  1. 使用了多线程机制之后,main方法结束,是不是有可能程序也不会结束。<br /> main方法结束只是主线程结束了,主栈空了,其它的栈(线程)可能还在<br /> 压栈弹栈。

5、分析一个问题:对于单核的CPU来说,真的可以做到真正的多线程并发吗?

1.对于多核的CPU电脑来说,真正的多线程并发是没问题的。

  1. 4CPU表示同一个时间点上,可以真正的有4个进程并发执行。

2.什么是真正的多线程并发?

  1. t1线程执行t1的。<br /> t2线程执行t2的。<br /> t1不会影响t2t2也不会影响t1。这叫做真正的多线程并发。

2.单核的CPU表示只有一个大脑:

  1. 不能够做到真正的多线程并发,但是可以做到给人一种“多线程并发”的感觉。<br /> 对于单核的CPU来说,在某一个时间点上实际上只能处理一件事情,但是由于<br /> CPU的处理速度极快,多个线程之间频繁切换执行,跟人来的感觉是:多个事情<br /> 同时在做!!!!!<br /> 线程A:播放音乐<br /> 线程B:运行魔兽游戏<br /> 线程A和线程B频繁切换执行,人类会感觉音乐一直在播放,游戏一直在运行,<br /> 给我们的感觉是同时并发的。<br /> <br /> 电影院采用胶卷播放电影,一个胶卷一个胶卷播放速度达到一定程度之后,<br /> 人类的眼睛产生了错觉,感觉是动画的。这说明人类的反应速度很慢,就像<br /> 一根钢针扎到手上,到最终感觉到疼,这个过程是需要“很长的”时间的,在<br /> 这个期间计算机可以进行亿万次的循环。所以计算机的执行速度很快。