![](https://img-blog.csdnimg.cn/3f3dc9d9046043b8812aa6db79054459.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java基础
欢迎来到我的 “Java基础“ 博客分类!在这里,我将分享 Java 编程语言的基础知识。
初学者指南
这个作者很懒,什么都没留下…
展开
-
单例模式(Singleton)
【代码】单例模式(Singleton)原创 2024-02-28 22:21:57 · 223 阅读 · 0 评论 -
BIO,NIO,AIO的区别
总的来说,BIO 适用于连接数较少但有较高数据处理需求的场景;NIO 适用于连接数较多但数据量不大的场景;AIO 适用于连接数较多且每个连接的数据量较小的场景。原创 2024-02-28 21:38:12 · 211 阅读 · 0 评论 -
原子性,可见性,有序性
指的是程序执行的顺序与代码的书写顺序一致。在单线程环境下,程序的执行顺序是可预期的,但在多线程环境下,线程的执行顺序可能会受到线程的执行顺序可能会受到多种因素的影响,如指令重排序、内存模型等。在缺乏同步措施的情况下,由于线程的本地缓存以及指令重排序等原因,一个线程对共享变量的修改可能对其他线程不可见,从而导致数据不一致或程序出现错误。,原子性保证了操作的完整性,可见性保证了数据的一致性,有序性保证了程序的可预测性,在多线程编程中,需要考虑如何确保这三个方面的特性以避免出现并发问题。原创 2024-02-28 21:52:46 · 247 阅读 · 0 评论 -
Java的四种引用,强弱软虚
对象被虚引用指向时,即使被回收之前,也会被放入ReferenceQueue中。虚引用主要用于跟踪对象被垃圾回收的时机,而不是提供对对象的访问。当内存不足时,JVM会尝试回收软引用指向的对象,避免OutOfMemoryError的发生。强引用是我们最常见的引用方式。在内存不足时,即使是强引用指向的对象也不会被垃圾回收器回收,这可能导致OutOfMemoryError。弱引用在垃圾回收器发现对象只被弱引用指向时,会被回收。这对于实现某些特定类型的缓存或者需要对象在没有强引用时被快速回收的场景很有用。原创 2023-12-01 23:45:01 · 29 阅读 · 1 评论 -
多线程的创建
每个线程都有自己的代码执行路径和独立的栈空间。线程池是一种管理线程的机制,它可以重用已经创建的线程,避免频繁地创建和销毁线程,从而提高性能。在Java中,可以使用Executor框架提供的ThreadPoolExecutor类来实现线程池。进程是操作系统中分配资源的基本单位,是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。好了,以上是我目前作为一个小白学习到的关于多线程的一点点知识,如有问题,欢迎各位大佬指正!线程是进程中的一个执行单元,是被包含在进程中的,是进程中的实际运作单位。原创 2023-09-05 11:53:10 · 34 阅读 · 1 评论 -
认识List、Set、Map
底层是红黑树结构,就是TreeMap实现,可以实现有序的集合。使用了synchronized来保证线程安全,所以效率较慢,底层是数组,使用ArrayList替代。底层是哈希表(数组+链表或数组+红黑树),在链表长度大于8时转为红黑树,在红黑树节点小于6时转为链表。增删比较慢, 线程不安全,底层是数组。底层是哈希表,可以很快的储存和检索,无序,大量迭代情况不佳。:实现了HashSet,多一条链表来记录位置,所以是有序的。底层是哈希表+链表,有序,大量迭代情况佳。线程不安全,底层是链表。原创 2023-09-12 14:57:18 · 34 阅读 · 0 评论 -
String、StringBuffer 和 StringBuilder 的区别
不过需要注意,StringBuffer是线程安全的,它对方法或调用进行了同步锁的处理,因此适合在多线程环境中使用。但需要注意,它不是线程安全的,如果在多线程中使用,可能需要额外的同步措施来保证数据安全。类型的字符数组,一旦被创建,内容就无法改变。每次对String进行操作都会生成新的String对象,因此频繁的字符串操作可能导致内存消耗。在选择使用String、StringBuffer还是StringBuilder时,考虑到程序的性能需求和线程安全性是非常重要的。String代表不可变的字符串对象。原创 2023-12-01 23:15:48 · 130 阅读 · 1 评论