
并发编程
文章平均质量分 82
介绍一些关于操作系统的概念、以及操作系统中的重要内容 进程、线程
zhenzhizz`
这个作者很懒,什么都没留下…
展开
-
多线程 —— 锁策略
锁策略,对于需要实现锁的程序员要重点掌握;对于普通的程序员,工作中很少会被要求实现一把锁,但普通的程序员会常常在代码中使用线程进行 “并发编程”,此时就会涉及到多线程,多线程会涉及到线程安全问题,线程安全问题就需要加锁进行解决。因此对于程序员来说,锁策略的知识点也需要掌握好。死锁:即在多线程或者多进程的环境下,两个或多个线程在执行过程中,由于争夺资源而造成的一种相互等待的现象,如果没有外力干涉,这些线程都将无法执行下去。原创 2024-05-24 11:39:49 · 734 阅读 · 0 评论 -
多线程典型例子(4)——线程池
由于该线程池类 ThreadPoolExecutor 中的线程数并不是一成不变的,而是根据任务的情况动态变化(自适应),如果任务多,该线程池中的线程数就多一些(创建出来),任务少,该线程池中的线程数就少一些(多余的就销毁),但是此处的动态变化也并不是没有限制,因此ThreadPoolExecutor类的构造方法提供了几个不同含义的参数,来对线程池的动态变化产生一定限制。因此可以使用 线程池,提前创建好一些线程放在线程池中,后续需要使用线程时,直接从线程池中随取随用即可,当线程不再使用时,就放回池子里。原创 2024-05-09 23:39:39 · 965 阅读 · 0 评论 -
多线程典型例子(2)——单例模式——饿汉模式、懒汉模式
详情原创 2024-05-07 19:29:32 · 472 阅读 · 0 评论 -
浅谈操作系统中的重要概念——线程(3)——设计模式
设计模式就相当于菜谱,有了菜谱/秘籍,就能够根据菜谱上的指引/步骤做出许多从前不会的美食,就算不会下厨的人,拥有了食谱,他的厨艺也能够得到提升和保障。因此设计模式就是程序员的菜谱,设计模式中介绍了许多典型场景,以及针对这些典型场景的处理办法。按照设计模式来写的代码不会很差,在一定的规范范围里。设计模式有很多种,不止23种,今天主要介绍两种常见、常用的:1、单例模式2、工厂模式工厂,顾名思义是用来生产的。那么对应到我们代码上,工厂模式就是用来生产对象的。那么具体是怎么进行生产对象的呢??原创 2024-05-07 19:26:49 · 1035 阅读 · 0 评论 -
多线程典型例子(3)——定时器
定时器:是日常开发中常见的组件,前端/后端都常用到。类似于一个闹钟:等待一定的时间后,执行某个任务。Java中对于定时器的使用提供了标准库中的Timer类(来自于java.util 包下的类 )。/*** 自我实现一个定时器* 实现思路:* 先描述,后组织。* 1、先要能够将一个任务描述出来* 2、使用一定的数据结构将多个任务 TimerTask 组织起来* 创建一个 TimerTask 这样的类表示要执行的任务,类里表示任务执行的内容,以及任务的实际执行时间。原创 2024-05-05 21:14:07 · 162 阅读 · 0 评论 -
多线程典型例子(1)——阻塞队列
学习了数据结构,我们会接触到队列此数据结构。队列的特点是先进先出。那么如何理解“先进先出”这个概念呢?下图中,右边是一组数:0 1 2 3 4 5 6 7 8,从左至右依次将数字放入队列queue中,再依次将队列中的数字取出来,此时由于0先进队列,因此0也是先出队列的。再举个例子。排队做核酸。先排队的人,就能够先做完核酸,后排队的人,就只能晚点做核酸。队列有许多种类,譬如 优先级队列、消息队列、阻塞队列。此处我们重点介绍阻塞队列。阻塞队列具有队列的一切特点,也是具有先进先出的特点。原创 2024-03-12 11:08:40 · 971 阅读 · 0 评论 -
浅谈操作系统中的重要概念——线程(2)
该篇文章继续重点介绍关于线程的使用,对于Java程序员来说,掌握线程的知识是非常必要的,不仅笔试面试中会用到,实际工作中更会用到。原创 2024-04-29 20:20:57 · 802 阅读 · 3 评论 -
浅谈操作系统中的重要概念——线程(1)
最初是尝试在创建进程时,只给进程分配一个简单的PCB,而不去分配后续进程运行时所需的系统资源,此时这类进程称作——轻量级进程(也叫做 线程 Thread),但是这样的尝试还是出现一个问题:线程创建出来,也是为了到cpu上执行,完成相关任务的。刚创建出来的进程,可以视为是一个只包含一个线程的进程(此时创建的过程需要分配资源,因此此时第一个线程创建的开销就可能比较大,后面再在这个进程里创建的线程,直接服用当前进程的资源,开销就比较小)一个进程中的前台线程都结束了,后台线程还没执行完,也会跟着进程的结束而退出。原创 2024-04-27 21:22:11 · 1011 阅读 · 0 评论 -
浅谈在Java代码中创建线程的多种方式
第一种创建线程的方式就是:自定义一个类,并且使该类继承自Java标准库 Thread 类,此时自定义的类需要重写 run() 方法。注意:重写的 run() 方法,要处理异常时,只能 try {} catch (),并不能 throws,这是因为 Thread 类中的 run() 方法并没有throws xxx这样的设定。重写的 run() 方法里书写的逻辑代码就是我们创建出来的新线程,所要执行的任务。原创 2024-04-27 21:19:57 · 987 阅读 · 1 评论 -
浅谈操作系统中的重要概念——进程
以 .exe 为后缀的可执行文件就是一个程序,一般是存储在硬盘上的。上图中,我们可以看到 QQ.exe 就是一个以.exe 为后缀的可执行文件,因此他就是一个程序,应用程序;图中其他以.exe结尾的文件,其类型也是应用程序。程序在没有双击运行时,是静态的存放在硬盘上的,此时并不会消耗系统资源。正在运行的程序就是进程。譬如说:QQ这个程序没有运行时,以 .exe 作为后缀的文件静态的存放在硬盘上,并没有运行。双击运行时,同一个程序,可以产生多个进程。原创 2024-04-25 21:34:05 · 984 阅读 · 1 评论 -
浅谈 操作系统
操作系统 其实就是一个软件(software)。是一个用来进行管理的软件。进行什么样的管理呢?操作系统一般由 内核 + 配套的程序 组成。内核即一个系统最核心的功能:对下,能够管理好各种硬件设备;对上,能够为各种程序提供稳定的运行环境。原创 2024-04-25 12:26:21 · 321 阅读 · 1 评论