Java并发三大问题与volatile关键字,CAS操作介绍

序言 先来看如下这个简单的Java类,该类中并没有使用任何的同步。 final class SetCheck { private int a = 0; private long b = 0; void set() { a = 1; b = -1; } boolean check() { return ((b == 0) || (b == -1 && a…

hello hello 发布于 2024-07-27

并发基础与Java多线程介绍

1多线程的优点 资源利用率更好 程序设计在某些情况下更简单 程序响应更快 1.1资源利用率更好案例 方式1 从磁盘读取一个文件需要5秒,处理一个文件需要2秒。处理两个文件则需要14秒 5秒读取文件A2 2秒处理文件A3 5秒读取文件B4 2秒处理文件B5 ———————6 总共需要14秒 方式2…

hello hello 发布于 2024-07-25

每日PR保持代码整洁自查表

如今,公司对软件工程师(主要是高级工程师)最迫切的需求之一,是以迭代和增量的方式提供高质量的代码审查。 这意味着在每次 PR 审查中,开发人员被要求反复提高即将合并代码的质量。 在这篇文章中,我将尝试指出开发人员在进行重构或审查时应牢记的基本原则。 让我们逐个主题来看这些点: # 1. 命名…

hello hello 发布于 2024-07-19

Lock和synchronized是什么?

在Java中, Lock 和 synchronized 是用于管理多线程环境中对资源的访问,以保证线程安全的两种机制。本文将介绍一下他们的基本原理以及代码中的实际用法示例。 简单介绍一下Lock 当谈到Java中的 Lock 机制,特别是如 ReentrantLock 这样的具体实现,我们可以从几个不同的层面深入理解其原理和工作方式。 Lock…

hello hello 发布于 2024-07-18

可重入锁和非可重入锁

在Java中,锁(Locks)是用来控制多线程对共享资源的访问的机制,确保在同一时间内只有一个线程可以访问特定的资源或执行特定的代码段。锁主要用于实现线程的同步。在Java中,有两种类型的锁被广泛讨论:可重入锁(Reentrant Locks)和非可重入锁(Non-reentrant…

hello hello 发布于 2024-07-18

Java内存模型JMM介绍

1. 为什么要有内存模型? 要想回答这个问题,需要先弄懂传统计算机硬件内存架构,如下图所示: 1.1. 硬件内存架构 (1)CPU 去过机房的同学都知道,一般在大型服务器上会配置多个CPU,每个CPU还会有多个核,这就意味着多个CPU或者多个核可以同时(并发)工作。如果使用Java 起了一个多线程的任务,很有可能每个 CPU…

hello hello 发布于 2024-07-18

Java线程池设计思想及源码实现

前言 线程池是非常重要的工具,如果要成为一个好的工程师,还是得比较好地掌握这个知识,很多线上问题都是因为没有用好线程池导致的。 总览 下图是 java 线程池几个相关类的继承结构: 先简单说说这个继承结构,Executor 位于最顶层,也是最简单的,就一个 execute(Runnable runnable) 接口方法定义。 ExecutorService…

hello hello 发布于 2024-07-18

Java阻塞队列BlockingQueue介绍

BlockingQueue 开篇先介绍下 BlockingQueue 这个接口的规则,后面再看其实现。 首先,最基本的来说, BlockingQueue 是一个 先进先出 的队列(Queue),为什么说是阻塞(Blocking)的呢?是因为 BlockingQueue…

hello hello 发布于 2024-07-18

Java LinkedList和Queue 介绍

LinkedList 概述 LinkedList与ArrayList一样实现List接口,只是ArrayList是List接口的大小可变数组的实现,LinkedList是List接口链表的实现。基于链表实现的方式使得LinkedList在插入和删除时更优于ArrayList,而随机访问则比ArrayList逊色些。…

hello hello 发布于 2024-07-16

Java ArrayList,Vector与Stack介绍

ArrayList ArrayList概述 ArrayList是实现List接口的动态数组,所谓动态就是它的大小是可变的。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。…

hello hello 发布于 2024-07-16
上一页 下一页