JavaSe知识点
文章平均质量分 84
记录学习JavaSe过程中的各类知识点
Jay/.
Mercedes-Benz
展开
-
JavaSE中AQS详解
在Java中,AQS是指AbstractQueuedSynchronizer,是Java并发编程中的一个关键类。AQS是用来构建同步器(Synchronizer)的框架,它提供了一种实现线程安全性和管理等待线程的机制。AQS基于一个FIFO(先进先出)的等待队列,可以被子类扩展来实现各种同步器,如ReentrantLock、CountDownLatch、Semaphore等。AQS通过定义了若干个方法来管理线程的获取和释放资源,其中最为重要的方法是acquire()和release()。原创 2023-07-17 15:36:16 · 211 阅读 · 2 评论 -
Java中ThreadLocal详解
通常情况下,当多个线程共享同一个变量时,需要考虑线程安全性和同步问题。而使用ThreadLocal可以避免这种复杂性,因为每个线程都有自己的变量副本,互相之间不会相互干扰。通过使用ThreadLocal,可以方便地实现线程封闭(Thread Confinement)的效果,将状态与线程相关联,提供线程安全的对象访问。在Web应用程序中,常用的应用场景包括保存用户会话信息、数据库连接等。需要注意的是,使用ThreadLocal需要谨慎,因为变量的值只在当前线程中可见,可能会导致内存泄漏或者数据不一致的问题。原创 2023-07-15 08:00:00 · 410 阅读 · 1 评论 -
Java中JUC并发编程面试题
首先我们来了解一下Java中都有哪些锁:1.(Pessimistic Locking):悲观锁认为在并发环境下,会发生并发冲突的概率很高,因此假设总是会有其他线程来竞争同一个资源,所以在访问资源之前先对其进行加锁,确保每次只有一个线程能够访问。2.(Optimistic Locking):乐观锁认为在并发环境下,发生并发冲突的概率较低,因此每次访问资源时都不会加锁,而是先读取数据,并在更新数据之前再次校验数据是否发生变化。如果校验通过,则更新数据;如果校验不通过,则重新尝试。原创 2023-07-14 08:00:00 · 153 阅读 · 1 评论 -
Juc并发编程之线程池实现原理
此篇文章属于Java语言必学基础内容线程池是一种用于管理和重用线程的技术。在计算机编程中,线程池是一组已经创建并准备好执行的线程。它们被组织在一个池中,以便在需要时,可以从池中获取一个线程来执行任务,而不是每次都创建一个新的线程。线程池的优点在于可以减少频繁创建和销毁线程的开销,提高线程的重用率和执行效率。通过使用线程池,可以控制并发线程的数量,从而避免由于大量线程同时执行而导致的资源过度消耗和性能下降的问题。线程池还可以提供一些额外的功能,例如任务调度、优先级管理和线程状态监控等。原创 2023-07-12 15:28:22 · 220 阅读 · 1 评论 -
Java中Socket编程
HTTP(Hypertext Transfer Protocol)是一种用于在客户端和服务器之间传输数据的协议。它是现代web通信的基础,用于在客户端(如浏览器)和服务器之间传递HTML、图片、视频、文件等数据。HTTP协议的特点包括:1. 简单易读:HTTP协议使用简单的文本格式,易于阅读和理解。2. 基于请求-响应模型:客户端发送一个HTTP请求给服务器,服务器则返回一个HTTP响应。请求和响应之间包括头部和消息主体。原创 2023-07-11 12:26:57 · 2047 阅读 · 1 评论 -
Java中Lock锁详解
在Java中,Lock是一个接口,它提供了比关键字更高级的线程同步机制。使用Lock接口可以创建更复杂和灵活的同步结构。Lock接口的常用实现类有ReentrantLock和ReentrantReadWriteLock,它们提供了可重入的互斥锁和读写锁。使用Lock锁的一般步骤如下:1. 创建一个`Lock`对象实例。2. 在需要进行同步的代码块中,通过调用`lock()`方法来获取锁。3. 在同步的代码块执行完之后,通过调用`unlock()`方法释放锁。原创 2023-07-08 13:19:00 · 7452 阅读 · 1 评论 -
Java中多线程的join方法详解
因为子线程执行需要2秒,所以在指定时间内子线程没有执行完成,主线程解除阻塞后继续执行。因为子线程执行需要一定时间(2秒),所以主线程会暂时被阻塞,直到子线程执行完成。方法的线程会等待被加入线程执行完成,然后再继续执行自己的后续操作。方法是用于将一个线程加入到当前线程,并且让当前线程等待被加入线程执行完成后再继续执行。毫秒的时间,如果在指定时间内被加入线程没有执行完成,那么当前线程会解除阻塞继续执行。在上述示例中,主线程创建并启动了一个子线程,并调用子线程的。方法的线程会等待被加入线程。原创 2023-07-06 13:33:00 · 3115 阅读 · 1 评论 -
Java中的synchronized锁
在Java中,synchronized是一种关键字,用于实现线程同步。它可以用于方法或代码块,用于保证同一时间只有一个线程可以执行被synchronized修饰的代码。synchronized的锁机制有两种使用方式:1. 同步方法:可以在方法声明中使用synchronized关键字。当一个线程调用同步方法时,会自动获取该方法所属对象的锁,其他线程将被阻塞,直到该线程释放锁为止。2. 同步代码块:使用synchronized关键字可以修饰一段代码块。原创 2023-07-06 12:22:56 · 1620 阅读 · 1 评论 -
Java中的ConcurrentHashMap集合
ConcurrentHashMap其采用分段锁设计,将一个大的线程安全的HashTable集合拆分成n多个小的HashTable集合,默认初始化16个小的HashTable集合。锁竞争概率非常小(即线程阻塞概率非常小)JDK1.7的index需要计算两次。ConcurrentHashMap是Java提供的线程安全的哈希表,它在多线程环境下提供高效的并发操作。它的底层实现原理是基于分段锁(Segment)和CAS(Compare and Swap)操作。原创 2023-07-04 15:05:45 · 345 阅读 · 0 评论 -
JavaSe多线程技术
此篇文章属于Java语言必学基础内容多线程技术是指在一个程序中同时运行多个线程(也可以理解为多个独立的任务),并且这些线程可以并行执行,从而提高程序的效率和性能。在多线程技术中,每个线程都有自己的代码执行路径、堆栈和局部变量等,但是它们共享进程的地址空间和全局变量等资源。多线程技术的应用广泛,例如:1. 在操作系统中,多线程技术可以用于实现任务调度、I/O操作、网络通信等。2. 在图形界面程序中,多线程技术可以用于实现用户界面响应和数据更新等。原创 2023-07-03 14:50:02 · 105 阅读 · 1 评论 -
Java中的IO流及其API的使用
此篇文章属于Java语言必学基础内容Java IO流是指在Java程序中操作输入和输出的机制。它是一种基于流的输入/输出模型,将数据视为一系列按顺序排列的字节,从一个流中读取,在一个流中写入。Java提供了多种类型的流,包括字节流和字符流,以适应不同的数据类型和输入/输出方式。它在Java的文件读写、网络传输、数据处理等方面都有广泛应用。IO流是Java中提供的处理输入输出数据的机制,它是以流的方式来处理数据。其中,输入流是从外部读取数据到程序中,输出流是将程序中的数据写入到外部。原创 2023-07-01 20:31:38 · 297 阅读 · 0 评论 -
JavaSe中的递归算法
Java的递归算法是一种解决问题的方法,它将问题逐步分解为更小的子问题,直到问题的规模足够小可以直接解决。递归算法通常在函数内部调用自身,并通过参数传递问题的规模和状态。递归算法典型的应用包括查找、排序、遍历和解决数学问题等。注意:在Java中,递归算法的实现需要注意处理递归终止条件和避免出现死循环。递归调用属于算法的一种,通过多加理解,可以掌握得更好,加油!原创 2023-06-28 16:17:38 · 115 阅读 · 1 评论 -
JavaSe基础File类相关知识
此篇文章属于Java语言必学内容提示:以下是本篇文章正文内容,下面案例可供参考Java 的 File 类表示文件或目录的抽象路径名。它可以用于访问或操作文件系统中的文件和目录,例如创建、删除、重命名、移动文件或目录等。File 类提供了多种构造方法,可以通过文件或目录的路径名字符串、URI 或 File 实例来创建 File 对象。File 类也提供了多种实例方法,例如获取文件名、路径名、父目录等信息以及判断文件或目录是否存在、是否为文件或目录等。原创 2023-06-27 21:00:32 · 87 阅读 · 0 评论 -
Java语言中HashMap集合面试常问问题
Java中HashMap集合在JDK1.8版本时基于 数组+链表+红黑树实现的,查询效率为O(1)使用内部类Entry来描述键值对对象原创 2023-06-26 18:27:06 · 337 阅读 · 2 评论