1、线程与进程

一、进程:

定义:

 进程是具有一定功能的程序在一个数据集合上的运行过程,它是系统进行资源分配和调度管理的一个可并发执行的基本单位。

理解:

       1、每个进程拥有独立的代码和数据空间。

       2、程序的一次执行,切换的开销大。

特征:

       1、动态性(最大的特性):系统创建、调度执行、申请资源被阻塞、完成任务后被撤销。

       2、异步性:进程由于使用资源的原因,在管理上使用异步的方式使用处理器和资源。

       3、独立性:为了并发。

       4、结构特征:一个进程实体有程序、数据和一个PCB(进程控制块构成)

状态转换:

 

二、线程:

定义:

线程是进程中实施和分派的基本单位。

分类:

用户级线程和核心级线程

特点:

独立调度、抢占式的执行、并发执行、共享进程的资源、切换开销小。

线程池:

创建一个进程的时候,同时创建多个线程,放入缓冲池中,这些线程等待工作,服务器接收到请求时

唤醒一个线程,并将请求交给它,任务完后重新放入线程池中。线程池中如果没有可用的线程,那么服务器就等待直到有线程被释放。

线程状态:

线程创建:

1、public class ThreadCreate extends Thread{

     public void run(){

            for(int i=0;i<50;i++){

                  System.out.println("Thread"+i);//循环50次

            }

     }

}

ThreadCreate threadCreate=new ThreadCreate();//创建一个线程了

 

2、public class RunnableCreate implements Runnable{

     public void run(){

            for(int i=0;i<50;i++){

                  System.out.println("Thread"+i);//循环50次

            }

     }

}

RunnableCreate  runnableCreate=new RunnableCreate ();

Thread rThread=new Thread(runnableCreate); //创建一个线程

常用的方法:

1、wait():Object方法、notify\notifyAll、释放资源,sleep():Thread类的静态方法、不释放资源。

2、interrupt():切换异常。

3、join():合并线程。当前线程阻塞时,被调用的线程执行。

4、yield():让出cpu资源。

线程同步:

synchronized

1、每个对象都有一个互斥锁、使用synchronized方法后,每个对象自能被一个线程访问。

死锁问题:

1、产生条件(四个必要条件):

互斥:资源被一个线程占用其他线程不能占用

不可剥夺:不能强抢资源,只能能拥有资源的线程释放资源。

请求保持:资源请求者在请求其他资源受阻时,对已经获得的资源不释放,持续占有。

循环等待:P1占有P2资源,P2占有P3资源,P3又占有P1资源。

2、解决死锁:

打破四个条件的任意一个

线程交互:

1、wait(),notify():

线程调度:

抢占式、高优先级、分时间片、先来先服务。

getPriority()、setPriority()、1-10数字越大优先级越高。

优先级高只是获得处理器资源的机会多并不一定先执行。

 

三、线程及进程区别:

1、根本区别:

      进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。

2、开销方面:

     每个进程都有独立的代码和数据空间,程序之间的切换会有较大的开销。

     线程可以看作是轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间的切换开销小。

3、所处环境:

     在操作系统中能够同时运行多个进程,在同一进程中能够有多个线程同时运行(CPU调度,每个时间片只有一个线程执行)

4、内存分配:

     系统在运行的时候为每个进程分配不同的内存空间,而线程除了CPU,系统是不会在给其分配内存的,那它使用的就是其所属的进程的资源,线程组之间只能共享资源。

5、包含关系:

     没有线程的进程可以看成是单线程的、如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线程共同完成的,线程是进程的一部分,所以线程也被称为轻权进程或轻量级进程。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值