Java
文章平均质量分 93
Java
Ysming88
这个作者很懒,什么都没留下…
展开
-
volatile原理解析
volatile原理解析原创 2022-07-05 16:27:41 · 234 阅读 · 0 评论 -
什么是AQS及其原理
谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock、Semaphore、CountDownLatch。。。1、AQS简介AQS全名:AbstractQueuedSynchronizer,是并发容器J.U.C(java.util.concurrent)下locks包原创 2022-02-14 21:26:15 · 858 阅读 · 0 评论 -
synchronized的使用,实现原理和锁的升级
文章目录一,Synchronized的使用1.为什么要使用synchronized2.synchronized的三种应用方式二,synchronized实现原理对象的组成三,Synchronized优化偏向锁轻量级锁一,Synchronized的使用1.为什么要使用synchronized在并发编程中存在线程安全问题,主要原因有:1.存在共享数据 2.多线程共同操作共享数据。关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时synchronized可以保证原创 2022-01-17 20:30:53 · 721 阅读 · 0 评论 -
java网络编程-Socket
网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细节。你可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节。java.net 包中提供了TCP/UDP两种常见的网络协议的支持Java Socket网络编程Socket概述Java的网络编程主要涉及到的内容是Socket编程,Socket,套接字,就是两台主机之间逻辑连接的端点。TCP/IP协议是传输层协议,主要解决数据如何在网络原创 2022-01-15 20:59:44 · 342 阅读 · 0 评论 -
java的几种IO
Java IO方式大体上可以分为三类,基于不同的io模型可以简单分为同步阻塞的BIO,同步非阻塞的NIO和异步非阻塞的AIO。先简单认识下这三种IO:BIO:首先,传统的java.io包是 blocking io(BIO),在jdk1.0的时候引入的,它提供了我们最熟知的一些IO功能,比如File抽象、输入输出流等。交互方式是同步、阻塞的方式,也就是说在读入输入流或者写入输出流时,在读写动作完成之前,线程会一直阻塞在那里,它们之间的调用时可靠的线性顺序。它的好处就是代码比较简单、直观,缺点则是IO效率原创 2022-01-13 15:26:17 · 3025 阅读 · 1 评论 -
集合之HashMap
java集合是面试java基础知识的重点,而HashMap既是集合中使用频率相当高的一个工具,而且也是面试集合问题中最常考且挖的很深的知识点,对HashMap的理解不能只是了解,还需要深入理解其底层原理。先展示下Map家族的关系层级,有助于我们更好的理解后面的内容。JDK7中的HashMap底层实现不管是1.7,还是1.8,HashMap的实现框架都是哈希表数组 + 链表的组合方式。但1.8在链表中加上了红黑树的结构。HashMap的主干是一个Entry数组。Entry是HashMap的基本组成单元原创 2022-01-12 16:02:23 · 217 阅读 · 0 评论 -
Java双向队列Deque实现栈与队列
Java中实际上提供了java.util.Stack来实现栈结构,但官方目前已不推荐使用,而是使用java.util.Deque双端队列来实现队列与栈的各种需求ava.util.Deque的实现子类有java.util.LinkedList和java.util.ArrayDeque.顾名思义前者是基于链表,后者基于数组实现的双端队列.ArrayDeque实现栈和队列...原创 2021-10-14 11:16:50 · 1835 阅读 · 0 评论 -
java集合容器总结
文章目录容器类框架Collection接口List接口ArrayList:Java容器类是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java容器主要可以划分为4个大部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)容器类框架Java容器工具包框架图:通过上图,可以把握两个基本主体,即Collection和Map。Collection是一个接口,是高度抽象出来的集原创 2021-08-26 11:22:04 · 140 阅读 · 0 评论 -
juc并发编程(五)java中的各种锁详细介绍
Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录:1. 乐观锁 VS 悲观锁乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。在Java和数据库中都有此概念对应的实际应转载 2021-08-23 21:54:26 · 445 阅读 · 0 评论 -
juc并发编程(四)JMM+Volatile+CAS
文章目录1,JMM:Java内存模型内存可见性2,Volatile3,单例模式4,深入理解CAS5,原子引用1,JMM:Java内存模型JMM即Java内存模型(Java memory model),JMM是用来定义一个一致的、跨平台的内存模型,是缓存一致性协议,用来定义数据读写的规则。内存可见性在Java中,不同线程拥有各自的私有工作内存,当线程需要读取或修改某个变量时,不能直接去操作主内存中的变量,而是需要将这个变量读取到线程的工作内存的变量副本中,当该线程修改其变量副本的值后,其它线程并不能立原创 2021-08-21 17:07:54 · 212 阅读 · 0 评论 -
juc并发编程(三)线程池+函数式接口+流式计算
文章目录1,线程池(重点)线程池的好处:创建线程池:三大方法创建线程池:7大参数线程池拒绝:四大策略2,四大函数式接口(必需掌握)3,Stream流式计算1,线程池(重点)池化技术程序的运行,本质:占用系统的资源! 优化资源的使用!=>池化技术线程池、连接池、内存池、对象池///… 创建、销毁。十分浪费资源池化技术:事先准备好一些资源,有人要用,就来我这里拿,用完之后还给我。线程池:三大方法、7大参数、4种拒绝策略线程池的好处:降低资源的消耗提高响应的速度方便管理。线程复原创 2021-08-21 13:23:08 · 121 阅读 · 0 评论 -
juc并发编程(二)线程安全的集合+常用的并发辅助类
文章目录1,集合类不安全CopyOnWriteArrayListCopyOnWriteArraySetConcurrentHashMap2,Callable的简单操作3,常用的辅助类(必会)CountDownLatchCyclicBarrierSemaphore4,读写锁5,阻塞队列1,集合类不安全CopyOnWriteArrayListList 不安全解决方案:List list = new Vector<>(),使用线程安全的VectorList list = Collec原创 2021-08-20 22:39:30 · 216 阅读 · 0 评论 -
juc并发编程(一)什么是JUC
文章目录1、什么是JUC线程和进程并发,并行线程有几个状态:2、Lock锁(重点)3、生产者和消费者问题4、8锁问题1、什么是JUCjava.util 工具包、包、分类线程和进程进程:一个程序,一个进程往往可以包含多个线程,至少包含一个!Java默认有几个线程? 2 个 :mian、GC开启线程的三个方法:Thread、Runnable、Callable并发,并行并发->多线程操作同一个资源并行->多条线程同时执行线程有几个状态:1、新建状态(New):新创建了一个线程对象原创 2021-08-20 20:28:06 · 93 阅读 · 0 评论 -
多线程详解
一,创建线程和启动(三种方式)1,继承Thread类创建线程类(不建议使用:避免OOP单继承局限性)• 定义一个继承Thread类的子类,并重写该类的run()方法;• 创建Thread子类的实例,即创建了线程对象;• 调用该线程对象的start()方法启动线程。class SomeThead extends Thraad { public void run() { //do something here } } public static原创 2021-08-13 22:41:21 · 160 阅读 · 0 评论