javase--多线程

学习记录

概述

什么是线程和进程?

何为进程?

进程是程序的⼀次执⾏过程,是系统运⾏程序的基本单位,因此进程是动态的。系统运⾏⼀个程
序即是⼀个进程从创建,运⾏到消亡的过程。
在 Java 中,当我们启动 main 函数时其实就是启动了⼀个 JVM 的进程,⽽ main 函数所在的线
程就是这个进程中的⼀个线程,也称主线程。
如下图所示,在 windows 中通过查看任务管理器的⽅式,我们就可以清楚看到 window 当前运⾏
的进程(.exe ⽂件的运⾏)。

何为线程

线程与进程相似,但线程是⼀个⽐进程更⼩的执⾏单位。⼀个进程在其执⾏的过程中可以产⽣多
个线程。与进程不同的是同类的多个线程共享进程的堆和⽅法区资源,但每个线程有⾃⼰的程序
计数器、虚拟机栈和本地⽅法栈,所以系统在产⽣⼀个线程,或是在各个线程之间作切换⼯作
时,负担要⽐进程⼩得多,也正因为如此,线程也被称为轻量级进程。

总结
线程 是 进程 划分成的更⼩的运⾏单位。线程和进程最⼤的不同在于基本上各进程是独⽴
的,⽽各线程则不⼀定,因为同⼀进程中的线程极有可能会相互影响。线程执⾏开销⼩,但不利
于资源的管理和保护;⽽进程正相反

使用多线程可能带来什么问题?

并发编程的⽬的就是为了能提⾼程序的执⾏效率提⾼程序运⾏速度,但是并发编程并不总是能提
⾼程序运⾏速度的,⽽且并发编程可能会遇到很多问题,⽐如:内存泄漏、上下⽂切换、死锁 。

线程的生命周期和状态

在这里插入图片描述

在这里插入图片描述

什么是上下文切换

多线程编程中⼀般线程的个数都⼤于 CPU 核⼼的个数,⽽⼀个 CPU 核⼼在任意时刻只能被⼀个
线程使⽤,为了让这些线程都能得到有效执⾏,CPU 采取的策略是为每个线程分配时间⽚并轮转
的形式。当⼀个线程的时间⽚⽤完的时候就会重新处于就绪状态让给其他线程使⽤,这个过程就
属于⼀次上下⽂切换。
概括来说就是:当前任务在执⾏完 CPU 时间⽚切换到另⼀个任务之前会先保存⾃⼰的状态,以
便下次再切换回这个任务时,可以再加载这个任务的状态。任务从保存到再加载的过程就是⼀次
上下⽂切换。
上下⽂切换通常是计算密集型的。也就是说,它需要相当可观的处理器时间,在每秒⼏⼗上百次
的切换中,每次切换都需要纳秒量级的时间。所以,上下⽂切换对系统来说意味着消耗⼤量的
CPU 时间,事实上,可能是操作系统中时间消耗最⼤的操作。
Linux 相⽐与其他操作系统(包括其他类 Unix 系统)有很多的优点,其中有⼀项就是,其上下⽂
切换和模式切换的时间消耗⾮常少。

线程的使用

线程创建方式

什么是线程死锁?如何避免死锁?

线程死锁描述的是这样⼀种情况:多个线程同时被阻塞,它们中的⼀个或者全部都在等待某个资
源被释放。由于线程被⽆限期地阻塞,因此程序不可能正常终⽌。

死锁必须具备以下四个条件:

  1. 互斥条件:该资源任意⼀个时刻只由⼀个线程占⽤。
  2. 请求与保持条件:⼀个进程因请求资源⽽阻塞时,对已获得的资源保持不放。
  3. 不剥夺条件:线程已获得的资源在末使⽤完之前不能被其他线程强⾏剥夺,只有⾃⼰使⽤完毕
    后才释放资源。
  4. 循环等待条件:若⼲进程之间形成⼀种头尾相接的循环等待资源关系。
    如下图所示,线程 A 持有资源 2,线程 B 持有资源 1,他们同时都想申请对⽅的资源,所以这两
    个线程就会互相等待⽽进⼊死锁状态
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 全国v3.0版javase加强第一阶段-第2套卷主要是指在javase基础上进行加强学习和应用。在这套卷中,学习者需要掌握更高级的Java编程知识和技巧。 首先,学习者需要对Java语言有扎实的掌握。他们应该熟练掌握Java的基本语法、数据类型、流程控制、面向对象等基础知识。在此基础上,他们还需要深入了解Java的高级特性,如多态、继承、接口等,并能够灵活运用这些知识解决实际问题。 此外,学习者还需要学习和掌握Java的核心类库。他们应该了解Java集合框架、IO流、多线程等核心类库的使用方法和原理,并能够利用这些类库进行开发和优化。 在加强第一阶段的学习中,学习者还应该注重实践。他们应该通过编写各种类型的Java程序来加深对知识的理解和掌握。这些程序可以是简单的练习题,也可以是实际的应用开发项目。 通过学习全国v3.0版javase加强第一阶段-第2套卷,学习者能够进一步提升自己的Java编程能力。他们将能够更加熟练地运用Java语言和核心类库进行开发,并能够解决更复杂、更实际的编程问题。这将为他们今后的学习和工作打下坚实的基础。 ### 回答2: 全国V3.0) JavaSE加强第一阶段-第2套卷是一套用于加强JavaSE知识的教材。JavaSEJava平台标准版的缩写,是Java语言的基础,涵盖了Java语言的基本语法、面向对象编程、异常处理、多线程、集合框架等内容。 这套教材的目的是在第一阶段的基础上,进一步加强学生对JavaSE的理解和应用能力。它通过一系列的教学案例,让学生掌握更深入的编程技巧和方法。对于想要进一步提升Java编程能力的学生来说,这套教材是一个很好的选择。 教材中的内容包括Java中的异常处理、文件操作、网络编程、GUI界面设计等多个方面。 这些内容都是Java编程中非常重要的知识点,掌握了这些知识,学生可以更加灵活地运用Java语言来解决实际问题。 教材的设计符合教育教学规律,注重理论与实践相结合,通过实际的编程案例,帮助学生巩固理论知识,并且锻炼解决实际问题的能力。 总之,全国V3.0) JavaSE加强第一阶段-第2套卷是一套旨在加强学生对JavaSE知识理解和应用能力的教材。它涵盖了JavaSE的核心内容,通过实例教学帮助学生锻炼编程能力。对于想要进一步提升Java编程水平的学生来说,这套教材是一个非常实用和有效的学习工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值