青云博客 记录、分享

Java线程之间是如何通信的

当我们处理线程通信时,通常有两种主要的实现方式,每种方式都有其独特的机制和优势: 共享内存: 这是一种常见的方式,多个线程可以访问同一个共享内存区域,通过读取和写入共享内存中的数据来进行通信和同步。在Java中,我们可以使用共享变量或共享数据结构来实现共享内存通信。例如,可以使用 volatile

詹学伟 Published on 2024-04-22

JAVA 守护线程和本地线程的区别

守护线程,可以看作是为其他线程提供服务的辅助工具。它们通常执行一些后台任务,比如垃圾回收、定期检查、日志记录等。一个重要的特点是它们不会阻止JVM的退出。当所有的本地线程都执行完毕后,JVM会自动退出,不会等待守护线程。 本地线程,则是应用程序的主力军,执行着应用的核心逻辑。它们的存在会阻止JVM退

詹学伟 Published on 2024-04-22

说说进程和线程的区别

当一个程序在计算机上运行时,通常会创建至少一个进程。进程被认为是操作系统分配资源的最小单元,每个进程都拥有独立的内存空间和系统资源,包括文件句柄和网络连接等。操作系统通常使用进程来表示独立的应用程序实例。比如,你的计算机上可能同时运行着浏览器、文本编辑器、音乐播放器等多个进程。 每个进程至少包含一个

詹学伟 Published on 2024-04-22

启动线程为何调用start而不是run方法

调用 start() 方法会告诉jvm创建一个新的线程,并在这个新线程中执行与 run() 方法相关联的代码块。这个过程允许多个线程同时运行,每个线程都拥有独立的执行上下文,这意味着它们可以在不互相干扰的情况下执行任务。 与此不同,如果直接调用 run() 方法,它仅

詹学伟 Published on 2024-04-22

说下Fork/Join框架,与传统线程池有何不同

Fork/Join框架是一个用于并行化执行任务的框架,它是Java 7引入的一个新特性,专门用于方便地利用多核CPU的性能优势,通过分治法的策略来将任务分解为更小的子任务,然后并行执行这些子任务,最后再合并子任务的结果。 Fork/Join框架的核心是ForkJoinPool,它是一种特殊的线程池,

詹学伟 Published on 2024-04-22

说说并发和并行的区别

并发针对单核 CPU 而言,它指的是 多个任务交替执行,每个任务都会在一段时间内执行一部分,然后切换到另一个任务,因为单核 CPU 一次只能执行一个任务。并发的目的是提高系统的响应性和吞吐量,允许多个任务在同一个处理器上共享时间片。 并行针对多核 CPU 而言,它指的是多个任务真正同时执行,每个任务

詹学伟 Published on 2024-04-22

什么是阻塞队列,举几个应用场景

阻塞队列(BlockingQueue)是一种特殊类型的队列,它用于在多线程环境中实现线程之间的通信。常见的Java阻塞队列实现包括:ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue等。 阻塞队列具有以下特点: 当队列为空时,从队

詹学伟 Published on 2024-04-22

BIO、NIO、AIO有什么区别

他们三者都是Java中常用的I/O模型,我们从以下三个维度进行对比: 阻塞与非阻塞: BIO是阻塞式I/O模型,线程会一直被阻塞等待操作完成。 NIO是非阻塞式I/O模型,线程可以去做其他任务,当I/O操作完成时得到通知。 AIO也是非阻塞式I/O模型,不需要用户线程关注I/O事件,由操作系统通过回

詹学伟 Published on 2024-04-22

String,Stringbuffer,StringBuilder的区别

三者均是Java中用来处理字符串的类,它们之间的主要区别如下: 可变性: String是不可变的类,一旦创建就不能被修改。每次对String进行操作时,都会创建一个新的String对象。 StringBuffer和StringBuilder是可变的类,可以动态修改字符串内容。 线程安全性:<

詹学伟 Published on 2024-04-22

Java中的基本数据类型有哪些?它们的大小是多少?

在Java中,基本数据类型有以下几种: 整数类型: byte:1字节,在内存中范围为-128到127 short:2字节,在内存中范围为-32768到32767 int:4字节,在内存中范围为约-21亿到21亿 long:8字节,在内存中范围为约-922亿

詹学伟 Published on 2024-04-22
Previous Next