![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
多线程
文章平均质量分 91
简单介绍一下线程的一个概念,带大家认识一下线程
忘忧记
这个作者很懒,什么都没留下…
展开
-
线程安全的集合类
我会简单的介绍一些线程安全的集合类,还有它们的基本构成,大家请不要安心难度的问题,现在只是简单的了解一下.为什么要涉及线程安全的集合类呢?因为假如说我们要在多线程环境下使用,怎么办?这里提供了俩种方案.1.最直接的办法,使用锁,手动保证~多个线程去修改ArrayList 此时就可能有问题就可以给修改操作进行加锁~~2.标准库还提供了一些线程安全的版本的集合类。原创 2023-04-11 15:15:35 · 684 阅读 · 0 评论 -
JUC(java.util.concurrent) 的常见类
ReentrantLock 是 Java 中一个提供同步机制的类,用于控制对共享资源的访问。它实现了 Lock 接口,提供了一组方法来获取和释放共享资源的锁.从这里可以看出来reentrantLock和Synchronized在功能上是不是有些相似呢?我们可以来简单的看一下.从四个方面出发:synchronized 关键字,是基于代码块的方式来控制加锁解锁的.ReentrantLock 则是提供了lock 和unlock独立的方法,来进行加锁解锁.我们先从四个方面去说明。原创 2023-04-11 09:14:39 · 446 阅读 · 0 评论 -
关于synchronized的介绍
我们先来看一下什么是synchronized,我做出了以下解释,大家可以看一下.1.synchronized 是Java中的关键字,用于实现同步机制,确保在多线程环境下对共享资源的访问的安全性。2.synchronized 可以被用来修饰方法或代码块,其作用是在同一时刻,只能有一个线程执行被 synchronized 修饰的代码,其他线程必须等待锁的释放才能继续执行。原创 2023-04-08 11:33:01 · 766 阅读 · 1 评论 -
多线程的CAS操作
CAS(Compare-and-Swap)是一种原子操作,用于实现多线程同步。在并发编程中,CAS操作通常被用于解决多个线程同时修改同一个变量的问题,保证数据的一致性。我们假设内存中的原数据V,旧的预期值A,需要修改的新值B。比较 A 与 V 是否相等。(比较)如果比较相等,将 B 写入 V。(交换)返回操作是否成功。原创 2023-04-07 21:53:17 · 353 阅读 · 0 评论 -
多线程的死锁问题
文章目录一.什么是死锁二.死锁的场景场景一场景二场景三这里做一个小小的总结三.如何避免死锁一.什么是死锁死锁大概的意思说几句是多个线程,它们中的一个或多个全部在等待某个资源被释放,由于线程被无限期地被阻塞,因此程序不可能被终止。二.死锁的场景场景一1.一个线程,一把锁(上面的情况),可重入锁没事,不可重入锁死锁.我举一个生活的场景,大家或许就明白了假设一个人要进入一间有锁的房间,并且需要一把钥匙才能打开门。该人带着钥匙进入房间,但是发现房间里面还有一个抽屉是上锁的,他需要再次获取钥匙才能打开原创 2023-04-06 10:34:27 · 908 阅读 · 0 评论 -
多线程的锁策略
其实这里指的锁策略,不只只是线程才存在的。也不只是针对Java的,我现在就即将介绍常见的锁策略。原创 2023-04-05 14:47:13 · 299 阅读 · 0 评论 -
三头六臂之线程池
线程池是多线程编程中非常重要的概念之一,使用线程池可以大大提高线程的使用效率和系统的性能。线程池不仅可以避免频繁地创建和销毁线程带来的资源浪费和性能损耗,还可以控制线程的数量,避免线程过多导致系统负载过高而出现崩溃的情况。本文将深入讲解线程池的概念、原理和使用方法,以及如何根据实际需求选择合适的线程池实现用户态是指应用程序执行的一种模式,它只能访问被操作系统允许的资源,例如CPU、内存、文件等。原创 2023-04-02 11:21:21 · 348 阅读 · 1 评论 -
线程的定时器问题
多线程的定时器是一种在多线程环境下实现定时任务的技术。它能够让多个线程在指定的时间点执行特定的任务,而不需要每个线程都自己实现一个定时器。使用多线程的定时器可以避免线程阻塞和任务调度的复杂性,提高代码的可读性和可维护性。在多线程的定时器中,一般通过一个定时器线程来维护所有的定时任务,该线程负责按照指定的时间间隔检查所有的任务,并在任务的执行时间点将任务放入一个线程池中,让线程池中的线程来执行任务。多线程的定时器可以通过Java内置的Timer类来实现,也可以使用第三方框架,如Quartz等。原创 2023-04-01 19:59:53 · 1137 阅读 · 0 评论 -
阻塞队列与生产者消费者模型
前面我们介绍了,notify和wait方法的说明,这里我们会引入一个综合的应用,对这个notify方法和wait方法的使用,让大家进一步了解阻塞队列,顺便了解完阻塞队列以后,我们会学习阻塞队列的一个应用消费者和生产者模式.大家尽请期待.实际上阻塞队列,就是起到一个阻塞等待的觉结果,其实它就是一个特殊的队列,它遵循一个先进先出的原则。我来列举一下阻塞队列的俩个特性:1.当队列满的时候,继续入队列就会阻塞等待,直到有其他线程从队列中取走元素。原创 2023-03-31 09:55:57 · 228 阅读 · 1 评论 -
java线程的wait和notify方法的说明
我们线程的执行是抢占式的,线程的执行是我们不可预测的,但实际的开发中,我们希望合理的协调多个线程同时进行,但是要怎么办呢?于是我们就引入这个wait和notify的方法,接下来我们来介绍这俩个方法的应用场景和具体是怎么使用的.原创 2023-03-24 11:08:34 · 781 阅读 · 1 评论 -
线程安全之单例模式
这篇文章,我们会介绍一下单例模式,但这里的单例模式,不是我们所说的设计模式,当然听到设计模式,大家一定都说,我当然知道设计模式了,有23种呢?一下子一顿输出,当然我这里说的单例模式还是跟设计模式有一些区别的,当然我不做概述,因为我也没咋个去了解过设计模式,我把大家拉回来,什么是多线程对的单例模式呢?看完我以下的解释相信你会明白的.多线程环境下的单例模式需要保证只有一个实例对象被创建,并且可以在多线程环境下安全地访问该实例。原创 2023-03-22 21:17:41 · 1497 阅读 · 0 评论 -
线程安全的粗略讲解
在多线程编程中,线程安全是一个非常重要的概念。当多个线程同时访问共享的资源时,如果不进行合理的同步控制,就会导致数据的不一致性、并发错误和系统崩溃等问题。这种情况称为线程不安全。线程安全是指多个线程访问共享资源时,不会出现不正确的结果。如果一个程序在单线程环境中执行是正确的,但在多线程环境中执行就不正确,那么这个程序就是线程不安全的。线程安全的代码不仅在单线程环境中正确,在多线程环境中也能正确执行。线程不安全可能会出现的问题包括竞态条件、死锁、饥饿、数据不一致等。原创 2023-03-18 12:58:51 · 596 阅读 · 1 评论 -
Java 线程的几种状态
在 Java 中,线程是一种轻量级的执行单元,能够并发地执行多个任务。Java 线程具有多个状态,在不同状态间切换,接下来我们即将介绍这些状态.原创 2023-03-17 20:37:10 · 579 阅读 · 1 评论 -
Thread 类的基本用法
在现代编程中,多线程编程已经成为了一种必备的技能。无论是在后端服务器编程,还是在移动设备和桌面应用程序开发中,都需要使用多线程来提高应用程序的性能和响应速度。Java中提供了丰富的多线程编程支持,其中最核心的就是Thread类。通过Thread类,可以轻松地创建线程,并且可以控制线程的运行状态。在本篇博客中,我将介绍Thread类的基本用法,包括线程创建、中断、等待、休眠和获取线程实例等方面,希望可以为读者提供一些帮助。原创 2023-03-16 18:00:27 · 759 阅读 · 1 评论 -
进程跟线程的区别
现代所有计算机都能同时做几件事情,当一个用户程序正在运行时,计算机还能同时读取磁盘,并向屏幕打印输出正文.在一个多道操作程序中,cpu由一道程序向另外一道程的切换,使每道程序运行几十个或者几百个ms.严格来说.在某一个瞬间,cpu只能运行一道程序.但在1秒钟期间,它也可能运行多道程序,这样就跟用户一种并行的错觉.有时候人们所说的伪并行就是cpu在多道程序之间来回快速切换,以此来区分它与真正的的硬件并行.因此我们就引入了进程和线程的一个概念。原创 2023-03-11 10:40:19 · 1579 阅读 · 0 评论 -
线程调度的基本过程
进程(Process)是计算机中正在执行的一个程序实例。进程是操作系统进行资源分配和调度的基本单位,每个进程都拥有独立的内存空间、程序计数器、栈、寄存器和其他系统资源,它们之间互相独立,互不干扰。一个进程可以包含多个线程,这些线程共享进程的资源。在操作系统中,进程的创建、撤销、调度和同步等操作都由操作系统内核负责。当操作系统启动一个程序时,会为其创建一个进程,并为该进程分配一定的系统资源。原创 2023-03-10 16:51:29 · 653 阅读 · 0 评论