JAVA并发编程 - 概念介绍

进程

一个在内存中运行的应用程序, 每个进程有自己独立的内存空间, 可以包含多个线程

线程

进程中的一个执行任务, 多个线程共享进程的内存空间

进程与线程的区别

1. 线程具有许多进程的特征, 称线程为轻型进程, 成进程为重型进程

2. 进程是操作系统资源分配的基本单位, 线程是CPU调度和执行的基本单位

3. 进程切换的资源开销大, 线程间的切换资源开销小

4. 进程与进程之间的资源是独立的, 而同一个进程下的所有线程共享这个线程的资源

下文切换

        一个CPU在任意时刻只能提供给一个线程使用, 为了提高CPU的利用率, 采取线程按时间片轮转的形式使用CPU. 当一个线程的时间片用完还没有完成任务, 就会重新进入就绪状态让给其他的线程使用. 任务从保存到再次加载的过程叫做一次上下文切换

用户线程

运行在前台, 执行具体的任务

守护线程

运行在后台, 为前台线程提供服务. 当用户线程结束时, 守护线程也会结束

死锁

        两个或多个进程或线程在执行过程中, 竞争资源或彼此间的通信造成阻塞, 若无外力作用, 将永远无法推进.

死锁的四个必要条件

互斥条件: 线程对所分配到的资源具有排它性, 一个资源只能被一个线程所占用, 直到该资源被线程释放

请求与保持条件: 线程因请求 被占用资源 发生阻塞, 对以获得的资源保持不放

不剥夺条件: 线程在资源使用完之前, 不能被其他线程剥夺

循环等待条件: 发生死锁时, 所有线程必定形成一个环路, 永久死锁

创建线程的四种方式

1. 继承Thread类

2. 实现Runnable接口

3. 使用Callable和Future

4. 使用线程池. 如Executor框架

Runnable和Callable区别

1. Runnable接口的run方法无返回值, Callable接口的call方法有返回值

2. Runnable接口的run方法只能抛出异常, Callable接口的call方法可以处理异常(Callable用于产生结果,Future 用于获取结果)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值