多线程 的概述:即同时做多件事情;一个服务器可以让多个人同时访问。 进程的概述:在一个操作系统中,每个独立执行的程序都可称之为一个进程,也就是“正在运行的程序”。 在以上图示中,在一个程序中多个线程执行图,看似同时进行,其实是由 CPU 调度,CPU的运行速度很快,所以看起来像是同时执行的。 在 java 中提供了实现多线程的两种方式:一种是继承java ......
263
0
0
2023-06-09
前言多线程的异步执行方式,虽然能够最大限度发挥多核计算机的计算能力,但是如果不加控制,反而会对系统造成负担。线程本身也要占用内存空间,大量的线程会占用内存资源并且可能会导致Out of Memory。即便没有这样的情况,大量的线程回收也会给GC带来很大的压力。 为了避免重复的创建线程,线程池的出现可以让线程进行复用。通俗点讲,当有工作来,就会向线程池拿一个线 ......
254
0
0
2023-06-08
在Java中我们启动线程都是调用Thread类中的start()方法来启动,当线程处理完run()方法里面的逻辑后自动终止。但是在调用start()方法之前,我们需要先构建一个Thread对象,一般我们都是直接使用Thread类的构造函数来创建一个线程对象,Thread构造函数定义如下: public Thread() { init(null, ......
266
0
0
2023-06-07
1 基本概括 2 主要介绍2.1 线程安全的概念 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。 2.2 多线程编程的三个概念 2.2.1 原子性 这一点,跟数据库事务的原子性概念差不多,即一个操作 ......
247
0
0
2023-06-06
一、状态简介 一个线程的生命周期里有五大状态,分别是:新生就绪运行死亡运行后可能遇到的阻塞状态 二、相关方法 2.1 新生状态 Thread t = new Thread(); 正如我们前面所说的,一个线程开始之后有自己的内存空间,这些工作空间和主内存进行交互,从主内存拷贝数据到工作空间。当这个语句执行的时候, 线程创建,开辟工作 ......
295
0
0
2023-06-05
目录前言案例演示和execute区别原理实现RunnableFuture类介绍任务执行run()原理任务结果获取get()原理任务取消cancel()原理总结前言Java线程池中提交任务运行,通常使用execute()方法就足够了。那如果想要实现在主线程中阻塞获取线程池任务运行的结果,该怎么办呢?答案是用submit()方法提交任务。这也是面试中经常被问到的 ......
267
0
0
2023-06-05
目录前言JDK线程池一瞥自己动手实现线程池线程池参数介绍实现Runnable实现Callable拒绝策略的实现线程池关闭实现工作线程的工作实现线程池实现的BUG完整代码线程池测试总结前言在前面的文章自己动手写乞丐版线程池中,我们写了一个非常简单的线程池实现,这个只是一个非常简单的实现,在本篇文章当中我们将要实现一个和JDK内部实现的线程池非常相似的线程池。J ......
303
0
0
2023-06-04
线程池 线程池是什么?简单来说, 线程 池是指提前创建若干个线程,当有任务需要处理时,线程池里的线程就会处理任务,处理完成后的线程并不会被销毁,而是继续等待下一个任务。由于创建和销毁线程都是消耗系统资源的,所以,当某个业务需要频繁进行线程的创建和销毁时,就可以考虑使用线程池来提高系统的性能啦。线程池可以做什么?借由《 Java 并发编程的艺术》,使用线程池能 ......
232
0
0
2023-06-02
目录概述线程池框架设计代码实现阻塞队列的实现线程池消费端实现获取任务超时设计拒绝策略设计概述线程池技术想必大家都不陌生把,相信在平时的工作中没有少用,而且这也是面试频率非常高的一个知识点,那么大家知道它的实现原理和细节吗?如果直接去看jdk源码的话,可能有一定的难度,那么我们可以先通过手写一个简单的线程池框架,去掌握线程池的基本原理后,再去看jdk的线程池源 ......
240
0
0
2023-06-02
目录一.阻塞队列介绍1.1阻塞队列特性1.2阻塞队列的优点二.生产者消费者模型2.1阻塞队列对生产者的优化三.标准库中的阻塞队列3.1Java提供阻塞队列实现的标准类3.2Blockingqueue基本使用四.阻塞队列实现4.1阻塞队列的代码实现4.2阻塞队列搭配生产者与消费者的代码实现一.阻塞队列介绍1.1阻塞队列特性阻塞队列特性:一.安全性二.产生阻塞效 ......
302
0
0
2023-06-02
一、概念介绍 方法区 :是虚拟机中一块 线程 共享的内存区域,用于存储类信息、常量池、静态变量、编译后的字节码等。 堆 :是虚拟机中最大的一块线程共享的内存区域,堆是 java 内存管理的核心区域,所有的对象实例和数组都在堆中分配内存。 虚拟机栈 :是线程私有的内存区域。虚拟机栈的内存空间是给线程使用的,每启动一个线程 ......
275
0
0
2023-05-31
目录介绍线程通用的线程生命周期Java 的线程生命周期Java 的线程状态切换从 NEW 到 RUNNABLE 状态从 RUNNABLE 到 TERMINATED 状态1. RUNNABLE 与 BLOCKED 的状态转换2. RUNNABLE 与 WAITING 的状态转换3. RUNNABLE 与 TIMED_WAITING 的状态转换Java 线程 A ......
284
0
0
2023-05-28
文章目录单例模式 设计模式部分后续也会出,但是可能会比较晚,先鸽一下嘿嘿嘿, 首先来加深理解一下加锁的作用 单例模式 作用: 能保证某个类在程序中只存在唯一一份实例, 而不会创建出多个实例。( JDBC 中的 DataSource 实例就只需要一个) 单例模式实现方法饿汉模式 类加载的同时, 创建实例 class Singleton { ......
249
0
0
2023-05-26
目录 二、 多线程 的实现方式(四种) 三、 线程池 的创建使用(五种) 1、newFixedThreadPool定长线程池 2、Cached thread Pool可缓存线程池 3、newSingleThreadExecutor单线程化线程池 4、newScheduledThreadPool周期性线程池 无返回值的周期 ......
296
0
0
2023-05-26
1.线程,进程和 多线程 1. 程序 :指指令和数据的有序集合,其本身没有任何意义,是一个静态的概念2. 进程 :指执行程序的一次执行过程,是一个动态的概念。是系统资源分配的单位(注意:很多多线程是模拟出来的,真正的多线程是指有多个cpu,即多核,如服务器。即在一个cpu的情况下,在同一时间点,cpu只能执行一个代码,因为切换的很快,所以就有同时执行的 ......
244
0
0
2023-05-25