a. 根本区别:进程作为资源分配的单位,线程调度和执行的单位
b. 开销:
每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销。
线程可以看成时轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),
线程切换的开销小。
c. 所处环境:
进程:在操作系统中能同时运行多个任务(程序)
线程: 在同一应用程序中有多个顺序流同时执行
d. 分配内存:
进程:系统在运行的时候会为每个进程分配不同的内存区域
线程: 除了CPU之外,不会为线程分配内存(线程所使用的资源是它所属的进程的资源),线程组只能共享资源
e. 包含关系:
进程:没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个线程,
则执行过程不是一条线的,而是多条线(线程)共同完成的
线程:是进程的一部分,所有线程又的时候被称为轻量级进程
2、什么是主线程?有什么特点?
就是main方法,在主栈中运行
3、线程创建有几种方式?
1. Thread*
创建一个类继承Thread然后重写run方法
然后创建一个Tread对象
start();
2. Runnable*
a. classA implements Runnable{}
b. 创建一个可运行的对象
classA a=new class();
c. 将可运行的对象封装成一个线程对象
Thread b=new Thread (r)
3. Callable