自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 java-07 多线程-并发编程

并发编程是指在一个程序中同时执行多个任务或线程。这通常涉及到多线程编程、线程同步、并发容器等技术。这些技术可以用来解决多线程环境中的问题,如线程安全、资源竞争、死锁等问题。在实际的Java并发编程中,还需要考虑到线程池、Future、Callable、ExecutorService等概念。包含:synchronized、原子变量、ThreadLocal、CountDownLatch、Future和CompletableFuture、volatile、线程池

2024-10-10 18:54:47 352

原创 java-07 多线程-并发编程(线程池,线程状态)

并发编程是指在一个程序中同时执行多个任务或线程。这通常涉及到多线程编程、线程同步、并发容器等技术。这些技术可以用来解决多线程环境中的问题,如线程安全、资源竞争、死锁等问题。在实际的Java并发编程中,还需要考虑到线程池、Future、Callable、ExecutorService等概念。

2024-10-10 17:07:24 308

原创 java-07 多线程-并发编程(ThreadLocal)

并发编程是指在一个程序中同时执行多个任务或线程。这通常涉及到多线程编程、线程同步、并发容器等技术。这些技术可以用来解决多线程环境中的问题,如线程安全、资源竞争、死锁等问题。在实际的Java并发编程中,还需要考虑到线程池、Future、Callable、ExecutorService等概念。

2024-10-10 17:04:45 229

原创 java-07 多线程-并发编程(原子变量、CountDownLatch、Future和CompletableFuture、volatile)

并发编程是指在一个程序中同时执行多个任务或线程。这通常涉及到多线程编程、线程同步、并发容器等技术。这些技术可以用来解决多线程环境中的问题,如线程安全、资源竞争、死锁等问题。在实际的Java并发编程中,还需要考虑到线程池、Future、Callable、ExecutorService等概念。在另一篇文章介绍了多线程、进程、并发、并行等基本概念,并分析了线程安全问题产生的原因,同时也整理了线程实现的4种方式,并做了对比,请参考。

2024-10-10 17:02:55 542

原创 java-07 多线程-并发编程(synchronized、原子变量、ThreadLocal、CountDownLatch、Future和CompletableFuture、volatile、线程池)

并发编程是指在一个程序中同时执行多个任务或线程。这通常涉及到多线程编程、线程同步、并发容器等技术。这些技术可以用来解决多线程环境中的问题,如线程安全、资源竞争、死锁等问题。在实际的Java并发编程中,还需要考虑到线程池、Future、Callable、ExecutorService等概念。

2024-10-10 16:58:22 412

原创 java-06 多线程-4种实现方式

多线程是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。在Java中实现多线程的方法有多种,主要包括继承Thread类、实现Runnable接口、实现Callable接口并通过FutureTask包装器来创建Thread线程,以及使用ExecutorService来管理线程。

2024-10-10 08:39:34 379

原创 java-05 数据结构-队列-LinkedBlockingQueue 和 ConcurrentLinkedQueue的区别

在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。

2024-10-09 10:27:08 380

原创 java-04 数据结构-队列-ConcurrentLinkedQueue队列详解及应用

ConcurrentLinkedQueue是Java并发编程中的一个重要工具,它提供了线程安全的无界非阻塞队列实现。通过高效的无锁编程技术,它能够在高并发场景下保持出色的性能表现。在需要快速插入和删除元素、无界队列以及高并发访问等场景中,ConcurrentLinkedQueue都是一个非常好的选择。然而,在使用时我们也需要注意其size()和isEmpty()方法可能带来的并发问题,并根据具体需求选择合适的同步机制或原子变量进行辅助处理。

2024-10-09 09:32:37 773

原创 java-03 数据结构-队列-LinkedBlockingQueue队列详解及应用

LinkedBlockingQueue 是 Java.util.concurrent 包下的一个类,它是一个线程安全的、基于链表的、可选有界的队列。它实现了 BlockingQueue 接口,可以在多线程环境下安全地使用。链表实现:LinkedBlockingQueue 是基于链表的数据结构实现的队列,它可以高效地支持插入和删除操作。线程安全:LinkedBlockingQueue 内部使用了锁来保证多线程环境下的线程安全。

2024-10-09 08:50:17 427

原创 java-02 数据结构-队列

在Java中,队列是一种常见的数据结构,用于在保持顺序的同时存储和检索数据。Java提供了java.util.Queue接口,它的常见实现包括ArrayDeque、LinkedList和PriorityQueue等。

2024-10-09 07:39:10 704

原创 JDK8-Stream总结【精简】

JDK8 Stream 流是 Java 8中引入的一个新特性,它提供了一种全新的处理集合的方式,使得代码更加简洁、易读、高效。 Stream 流的核心思想是将集合或数组转化为一个流,然后通过各种操作对其进行处理,最后得到一个新的流或结果。

2024-10-08 11:02:08 1086

原创 java-01 正则表达式

java 中通过正则表达式可以实现对字符串的有效匹配和处理。本篇文章将详细介绍 Java 中的正则表达式,包括基本概念、语法规则、常用方法等。

2024-09-27 17:30:33 962

原创 JDK8-DateApi(LocalDate、LocalTime、LocalDateTime...)

在Java8之前,处理日期时间的类是Date、Calendar,这两个在使用起来总是让人感觉不是很舒服,在设计上面有一些缺陷,并且java.util.Date和SimpleDateFormatter都不是线程安全的. 作为JDK1.8 推出的LocalDate、LocalTime、LocalDateTime这个三个时间处理类,主要用来弥补之前的日期时间类的不足,简化日期时间的操作. 在格式化操作方面,也推出了一个新的格式化类DateTimeFormatter。

2024-09-26 10:50:06 341

原创 JDK8-Stream总结3

原始流(Stream):这是流的基本形式,其中操作是顺序执行的,意味着每个操作的执行都在前一个操作完成后开始。并行流(Parallel Stream):并行流是流的一种形式,其中操作是并行执行的。这意味着多个线程可以同时对流中的元素进行操作。

2024-09-25 17:23:55 370

原创 JDK8-Stream总结2

‌Stream操作‌在Java中主要用于处理集合数据,它提供了一种高效且易读的方式来处理数据集合(如List、Set等)。Stream操作大致可以分为两类:中间操作和终端操作。中间操作‌包括filter、map等,它们返回一个新的流,并且包含所有之前的操作结果。这些操作总是延迟计算,意味着它们只在终端操作时执行,这样可以最大限度地优化资源使用。终端操作‌则会产生一个新的集合或值,每个流只能进行一次终端操作。终端操作结束后,流无法再次使用。终端操作包括遍历(foreach)、匹配(find-match)等

2024-09-25 17:22:12 304

原创 JDK8-Stream总结1

lambda表达式是stream的基础,初学者建议先学习lambda表达式:。通常我们在数组或集合的基础上创建stream,stream不会专门存储数据,对stream的操作也不会影响到创建它的数组和集合,对于stream的聚合、消费或收集操作只能进行一次,再次操作会报错

2024-09-25 17:14:06 342

原创 JDK8-Optional类

Optional是Java8引入的类,用于解决空指针异常。它作为一个容器,可以保存类型T的值或null。通过Optional提供的方法,如map、orElse等,可以更优雅地处理可能为空的对象,避免显式的null检查,使代码更简洁。文章介绍了Optional的创建、获取值的方法以及注意事项,如避免基础类型的Optional和合理使用orElse方法。

2024-09-25 15:00:19 933

原创 JDK8-lambda表达式

代码调用Collections.sort方法对集合进行排序,其中第二个参数是一个匿名内部类,sort方法调用内部类中的compare方法对list进行位置交换,因为java中的参数类型只能是类或者基本数据类型,所以虽然传入的是一个Comparator类,但是实际上可以理解成为了传递compare方法而不得不传递一个Comparator类 ,这种方式显得比较笨拙,而且大量使用的话代码严重冗余,这种情况在java8中通过使用lambda表达式来解决。(1).参数的括号不能省略,(2).其他语法同多参数。

2024-09-25 09:43:33 1034

原创 JDK8-新增接口的默认方法与静态方法

在JDK7及以前的版本中,接口中都是抽象方法,不能定义方法体,但是从jdk8开始,接口中可以定义静态的非抽象的方法,直接使用接口名调用静态方法,但是它的实现类的类名或者实例却不可以调用接口中的静态方法。也可以定义普通的非抽象的方法,普通的非抽象方法要在返回值前加上default,对于普通的非抽象方法必须使用子类的实例来调用。如果有多个接口定义了相同的默认方法,实现多个这些接口时必须重写默认方法,否则编译失败。default修饰的方法,通过接口的实现类的对象调用;static修饰的方法,直接通过接口名调用。

2024-09-25 08:01:51 230

原创 Markdown语法

Markdown是一种轻量级的标记语言,广泛用于文档编辑、博客写作和代码笔记等领域。它具有简洁、易读、易写的特点,可以方便地将文本转换为各种格式的文档。大部分语法符号后需要有个空格才生效。

2024-09-24 17:09:12 636

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除